美文网首页
第十一章 持有对象

第十一章 持有对象

作者: AcientFish | 来源:发表于2018-11-14 11:00 被阅读5次

    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、容器不能持有基本类型,只能持有对象类型。但自动装箱机制使得容器也能持有“基本类型”的数据。
    容器的简单分类如下图


    容器简单分类

    相关文章

      网友评论

          本文标题:第十一章 持有对象

          本文链接:https://www.haomeiwen.com/subject/rdurfqtx.html