容器:Collection,List,ArrayList, LinkedList, Set

容器和数组的区别:

数组:从效率和类型检查的角度讲,数组是最好的,但是数组长度一旦确定不可更改,因此不灵活。

容器:一种灵活的,容量可以随时扩充的容器来装载我们的对象。

容器的简单结构:

容器:Collection,List,ArrayList, LinkedList, Set_第1张图片

容器:Collection,List,ArrayList, LinkedList, Set_第2张图片

 

 

 

 

 1.Collections:容器的顶层接口

 

容器:Collection,List,ArrayList, LinkedList, Set_第3张图片

 

 

迭代器:

使用迭代器时,分三步走策略:

  • 第一步:获取对象
  • 第二步:判断是否存在下一个
  • 第三步:获取元素

Iterator和ListIterator区别

  • ListIterator有add()方法,可以向List中添加对象,而Iterator不能
  • ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator就不可以。
  • ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能。
  • 都可实现删除对象,但是ListIterator可以实现对象的修改,set()方法可以实现。Iierator仅能遍历,不能修改。

2.List接口:有序(索引),可重复

容器:Collection,List,ArrayList, LinkedList, Set_第4张图片

 

 

 List接口的实现类:

  • ArrayList:  特点:根据索引进行查询,遍历效率高,增删效率低,涉及到数据的拷贝问题

  

容器:Collection,List,ArrayList, LinkedList, Set_第5张图片

 

 

  •  LinkedList:  特点:做增删效率高,遍历|根据索引查询效率低

  容器:Collection,List,ArrayList, LinkedList, Set_第6张图片

 

3.Set:无序,不可重复的,会实现去重效果

特点: 查询效率高,增删效率高,但是无序

HashSet :哈希表实现(数组+链表+红黑树)

链表:链表是一种数据结构,和数组同级。是LinkedList的实现原理。

链表是一种线性表,由节点组成,每个节点只有他自己知道下一个节点的存储位置,添加节点是从右往左的——每个节点有两个成员:储存的对象、对下一个节点的引用。

容器:Collection,List,ArrayList, LinkedList, Set_第7张图片

 

 

红黑树:一种数据结构

当元素个数到达八个时链表转红黑树。

 

Hashset和treeset 的类结构图:

容器:Collection,List,ArrayList, LinkedList, Set_第8张图片

 

 

 

 

你可能感兴趣的:(容器:Collection,List,ArrayList, LinkedList, Set)