第十一章 持有对象

1、Collection接口和Map接口
2、Collection包括List、Set和Vector,其中List的实现有ArrayList、LinkedList、LinkedHashList 。Set的实现有HashSet、TreeSet、LinkedHashSet。Vector属于过时被淘汰的实现。

  • List的特点是可重复且有序。
    • ArrayList的底层是数组,因此优点在于随机访问时速度快效率高。缺点在于在中间插入元素、移除元素时效率低下。
    • LinkedList的底层是链表,在随机访问时效率较低,但在中间进行插入和删除操作时效率较高。

List的所有方法都是根据equals()方法的结果发发生变化的。如contains、remove、indexOf等,均是根据equals()方法的返回结果判断。

  • Set的特点是元素不可重复。
    • HashSet底层也是通过hash码来确定元素位置。在新增元素时会先根据hashCode()方法得到hash码,在set中判断是否存在,不存在则插入,存在则抛弃。
    • TreeSet底层是通过红黑树来实现,因此可以实现元素之间的排序。

3、LinkedList可以作为栈、队列或双端队列的实现。常用方法如下。

  • getFirst()、element()。两个方法一样,都是返回链表第一个元素,但不会删除元素。在list为空时会报NoSuchElementException。
  • peek与上述两个方法类似,也不会移除元素,但是在list为空时不会报错,返回null。
  • remove()、removeFirst()。两个方法一样,都是返回第一个元素,但会删除元素。
  • poll 与peek类似,在list为空时返回null。同时会移除元素。
  • addFirst()、add()、addLast()、offer()。除了addFirst()是在头部添加元素外,其他方法都是在尾部添加元素。

4、Collections类提供了对Collection的排序方法,排序为sort,乱序为shuffle。另外集合之间求交集可以用retainAll()。需要注意的是此方法也是基于equals的结果判断的。
5、容器不能持有基本类型,只能持有对象类型。但自动装箱机制使得容器也能持有“基本类型”的数据。
容器的简单分类如下图


第十一章 持有对象_第1张图片
容器简单分类

你可能感兴趣的:(第十一章 持有对象)