总结collection类

Posted 小黄鸡1992

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了总结collection类相关的知识,希望对你有一定的参考价值。

1.collection

collect为存储数据的集合类的顶级接口。所以不能实例化,只能实现collection,长度可变,集合为引用类型。

list和set是collection的实现类

2.list

list有序,可以重复,可以为空,实现类有ArrayList、LinkedList 和 Vector。

  1. linklist以链表的方式存储增删更快,线程不安全,效率高。
  2. arraylist以数组的方式存储,查询更快 ,效率高,线程不安全。
  3. vector线程安全,效率低,增长率为100%,数据量较大的数据

3.set

不可以重复,无序,treeset,hashset,linkhashset为set的实现类。

  1. hashset 数据结构是哈希表,按照hash值排序,不存在重复值,通过hashcode和equals判断。线程安全,存取快。
    元素的哈希值是通过元素的hashcode方法来获取的, HashSet首先判断两个元素的哈希值,如果哈希值一样,接着会比较equals方法 如果 equls结果为true ,HashSet就视为同一个元素。如果equals 为false就不是同一个元素。
    哈希值相同equals为false的元素是怎么存储呢,就是在同样的哈希值下顺延(可以认为哈希值相同的元素放在一个哈希桶中)。也就是哈希一样的存一列。

  2. treeset 可以自然排序。不可重复。

  3. LinkedHashSet 会保存插入的顺序

4.map

map是map的接口的实现类,为键值对的,包括hashmap,treemap,hashtable,linkedtreetable。

  1. hashmap 且键唯一,键 值 可为空,线程不同步。
  2. treeMap 可以对集合中的键进行排序
  3. LinkedHashMap 保存了记录的插入顺序
  4. hashtable key和value的值均不允许为null;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢。

5.遍历map

iterator it = map.entry rset.interator()
while(it.hasnext()){
entry k = it..next()
syso(k.getkey(),k.getvalue)
}

6.线程安全问题

linklist arraylist hashset linkhashset线程不安全
vector hashtable为线程安全
stringbuffer为线程不安全 stringbuild为线程安全

7.总结

  1. ArrayXxx:底层数据结构是数组,查询快,增删慢
  2. LinkedXxx:底层数据结构是链表,查询慢,增删快
  3. HashXxx:底层数据结构是哈希表。依赖两个方法:hashCode()和equals()
  4. TreeXxx:底层数据结构是二叉树。两种方式排序:自然排序和比较器排序

以上是关于总结collection类的主要内容,如果未能解决你的问题,请参考以下文章

Java集合类操作优化总结

Java集合框架--Collections工具类的使用 & Java集合框架总结

Collection类相关总结

基础总结/集合/collection总结

总结collection类

java-Collection类-各实现类用途总结