12345public abstract class AbstractList<E> extends AbstractCollection<E>implements List<E>{ //外部操作数:记录了数据量变化的次数 //对于数据的更新(添加、删除、清空),modCount就会++ protected transient int modCount = 0;// 2} 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485public class ArrayList<E> extends AbstractList<E> implements List<E>{ //默认容量 private ...
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>{ //外置比较器 private final Comparator<? super K> comparator; //根节点 private transient Entry<K,V> root;//null //元素个数 private transient int size = 0; // ...
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748public class Vector<E> extends AbstractList<E> implements List<E>{ protected Object[] elementData;//new Object[10]{"杨勇1","杨勇2","杨勇3".....} protected int elementCount;//3 public synchronized void addElement(E obj) { modCount++; ensureCapacityHelper(elementCount + 1); elementData[elementCount++] = obj; ...
123456789101112131415161718192021222324252627public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>{ //外置比较器 private final Comparator<? super K> comparator; public TreeMap() { comparator = null; } public TreeMap(Comparator<? super K> comparator) { this.comparator = comparator; } //key - new Student("麻生希", '女', 25, "2301", "001") ...
枚举引入 编写季节类(Season),该类只有四个对象(spring,summer,autumn,winter) 概念 枚举(enum)全称为 enumeration, 是 JDK 1.5 中引入的新特性。 语法1234public enum Color{ //默认添加 public static final RED,GREEN,BLUE;} 本质 尽管枚举看起来像是一种新的数据类型,实际上,枚举就是一种受限制的类,并且具有自己的方法。创建自己的enum类时,这个类继承自 java.lang.Enum。 123 public abstract class Enum<E extends Enum<E>> implements Comparable<E>, Serializable{ ...} 特点 枚举就是一个受限制的类,默认继承Enum 枚举的第一行必须定义该枚举类型的对象 枚举类型对象默认添加: public static final 类型 枚举没有继承明确类(自定义枚举 ...
12345public abstract class AbstractList<E> extends AbstractCollection<E>implementsList<E> { //外部操作数 //涉及到元素个数变化(添加、删除、清空)时,外部操作数就会++ protected transient int modCount = 0;//3} 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758public class Vector<E> extends AbstractList<E> implements List<E>{ //数据容器 protected Object[] elementData;//new Object[10]{"麻生希","椎名空" ...
多线程一、什么是进程 进程是系统进行资源分配和调用的独立单元,每一个进程都有它的独立内存空间和系统资源。 二、单进程操作系统和多进程操作系统的区别 单进程操作系统:dos(一瞬间只能执行一个任务) 多进程单用户操作系统:Windows(一瞬间只能执行多个任务) 多进程多用户操作系统:Linux(一瞬间只能执行多个任务) 三、现在的多核CPU是否可以让系统在同一个时刻可以执行多个任务吗? 理论上是可以的 四、什么是线程,理解线程和进程的关系 什么是线程? 线程是进程里面的一条执行路径,每个线程同享进程里面的内存空间和系统资源 一个进程 可以有 多个线程:各个线程都有不同的分工 理解线程和进程的关系 进程 与 进程 之间的关系:进程之间的内存空间和系统资源是独立的 同一个进程里的多条线程 :线程之间的内存空间和系统资源是共享的 进程里:可以有一条或一条以上的线程 进程里只有一条线程的情况下,这条线程就叫做主线程 进程里有多条线程的情况下,只有一条线程叫做主线程 Ps:线程是在进程里的,他们是包含关系 五、我们应用的软件有哪些是多线程的应用? 都是 六、Java中,如何来编 ...
IO流概念 I – in – 输入(读) O – out – 输出(写) 流 – 一点一点的想水流一样去传输数据 注意:站在程序的角度去看待输入还是输出 分类 按照方向分流:输入流、输出流 按照单位分流:字节流、字符流 按照功能分流:基础流/节点流、处理流 注意:new 处理流(new 基础流) – 装饰者模型 – 处理流对象中往往包含了基础流的对象,在基础流的基础上拓展了额外的功能,使得流更为强大(效率),工作中一般使用处理流 存储单位 1024KB = 1MB 1024MB = 1GB 1024GB = 1TB 1024TB = 1PB 注意:进制1024 学习注意事项 按照流的发展历史去学习 注意流与流之间的继承关系 举一反三 字节流 应用场景:操作二进制数据(音频、视频、图片) abstract class InputStream – 字节输入流的基类(抽象类) abstract class OutputStream – 字节输出流的基类(抽象类) class FileInputStre ...
线程池引入一个线程完成一项任务所需时间为: 创建线程时间 - Time1 线程中执行任务的时间 - Time2 销毁线程时间 - Time3 为什么需要线程池 线程池技术正是关注如何缩短或调整Time1和Time3的时间,从而提高程序的性能。项目中可以把Time1,T3分别安排在项目的启动和结束的时间段或者一些空闲的时间段 线程池不仅调整Time1,Time3产生的时间段,而且它还显著减少了创建线程的数目,提高线程的复用率 系统启动一个新线程的成本是比较高的,因为涉及与操作系统的交互,在这种情形下,使用线程池可以很好地提高性能,尤其是当程序中需要创建大量生存期很短暂的线程时,优先考虑使用线程池 Java提供的线程池 ExecutorService:线程池的接口 Executors:创建各种线程池的工具类 1234567891011121314151617181920212223242526272829303132public class Test { public static void main(String[] args) { //创建单个线程的 ...
JDK1.8新特性JDK1.8新特性简介 速度更快 - 优化底层源码,比如HashMap、ConcurrentHashMap 代码更少 - 添加新的语法Lambda表达式 强大的Stream API 便于并行 最大化减少空指针异常 - Optional Lambda表达式简介 Lambda是一个匿名函数(方法), 允许把函数作为一个方法的参数 。利用Lambda表达式可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。 一般都是优化匿名内部类 基础语法无参数、无返回值的抽象方法 123456789101112131415161718public class Test1 { @Test public void test01() {// I1 i1 = new I1() {// @Override// public void method() {// System.out.println("传统使用匿名内部类的方式");// }// };// ...