一、集合容器
1、为什么需要容器?
《thinking in java》书中说:“如果一个程序只包含固定数量的且生命周期都已知的对象,那么这是一个非常简单的数据。”但是事实上,我们平时接触的程序都不是如此简单的,很多程序都是在运行时才知道需要创建什么对象、创建多少对象,因此很可能我们需要在任意时刻任意位置创建任意数量的对象。因此,不能依靠创建命名的引用持有每一个对象,因为不确定性,我们必须要动态的创建对象,保存对象(其实是对象的引用)。
2、集合框架图:
3、具体框架内容分析:
3.1:ArrayList
3.1.1是顺序容器,底层通过数组实现,允许放入null值;grow()方法扩容,1.5倍扩容;
3.1.2对于ArrayList而言,size(),isEmpty(),get(),set()方法的时间复杂度是常数时间,add()方法开销和插入的位置有关,addAll()方法开销和添加的元素数量成正比,其余方法都是线性时间完成。
3.1.3 ArrayList删除目标索引位置,之后该位置是为null,还是后面补上;测试结果:后面元素补上!
3.2LinkedList
3.2.1实现了List接口,因此它也是一个顺序容器,但是同时也可以将其用作栈、队列或双端队列(实现了Deque接口)。LinkedList底层通过双向链表实现;
3.2.2Node(item,next,prev);
3.2.3LinkedList的first和last引用分别指向链表的第一个和最后一个元素,链表为空时,first和last指向null。
3.3.4测试LinkedList删除目标索引位置,之后该位置是为null,还是后面补上;测试结果:后面元素补上!