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

容器和数组的区别:

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

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

容器的简单结构:

 1.Collections:容器的顶层接口

迭代器:

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

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

Iterator和ListIterator区别

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

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

 List接口的实现类:

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

  

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

  

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

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

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

链表:

红黑树:

Hashset和treeset 的类结构图:

猜你喜欢

转载自www.cnblogs.com/lingxi2b2/p/11984205.html