美文网首页
Java集合(1)--Collection接口及其实现类

Java集合(1)--Collection接口及其实现类

作者: Kylin824 | 来源:发表于2017-12-04 00:44 被阅读0次

    Collections是其他集合类的根接口

    Set、List、Queue是子接口,同样不能实例化

    子接口下面的实体类(如ArrayList)才可以实例化。

    Collections中没有get()方法,Lisi和ArrayList中才有,因为get()方法不是所有集合类的共性

    HashSet集合存入一个元素时,会调用该对象的hashCode()方法得到该对象的hashCode值,根据hashCode值决定存放位置

    Iterator接口 定义了4个方法:hasNext() next() remove() forEachRemaining() 用于遍历Collections中的元素

    Set接口 线程不安全 多线程操作同一集合时需要同步

    • HashSet:无序集合 以hashcode值计算存储位置存储 <- LinkedHashSet:链表无序集合,按添加顺序排列元素
    • SortedSet接口:有排列的集合 <- TreeSet:红黑树数据结构 默认按元素大小排列,可改成自然排序/定制排序
    • EnumSet:枚举集合

    List接口(增加了与索引有关的方法)

    有一个initialCapacity参数 默认为10 增加元素超过该数组长度时会自动增加

    • ArrayList 新 常用 线程不安全 性能高
    • Vector 古老 少用 线程安全 所以性能低 <- Stack子类 模拟栈的数据结构 有peak pop push等方法
    • LinkedList:既实现了List接口 也实现了Deque接口 可当作List集合也可当双边队列来使用

    Queue接口 (模拟队列:先进先出)

    • PriorityQueue 非绝对标准的队列 以与元素大小排序 而非以进入队列顺序排序 可改成自然排序/定制排序
    • Deque接口:代表双端队列 头尾都可插入元素 可当成栈来用(只操作尾部)
    • Deque接口:<- ArrayDeque实现类 与ArrayList一样基于数组

    ArrayList与ArrayDeque的实现机制相似,底层采用一个动态的,可重分配的Object[]数组来存储集合元素,当超容量时,系统在底层重新分配一个Object[]数组来存储集合元素

    Vector也是以数组形式存储,但实现了线程同步,所以性能较低

    LinkList与LinkedHashSet的实现机制,内部以链表的形式保存集合元素,随机访问时效率低,但插入,删除时性能高

    List集合使用tips:

    • 对于数组型,遍历时采用随机访方法get() ; 对于链表型,遍历时采用迭代器(Iterator)
    • 需要经常插入、删除则用链表型
    • 若多个线程同时操作,可使用Collections将集合包装成线程安全的集合(后面讲)

    相关文章

      网友评论

          本文标题:Java集合(1)--Collection接口及其实现类

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