整理半下午才整理这么一点(每个对象都重新翻了下源码,防止写错),明天继续弄
类名 | 类说明 | 数据结构 | 线程安全 | 同步方式 | 可重复 | 顺序 | 对比方式 | 存储null |
ArrayList | 遍历速度很快,数据结构调整效率低一点 | 数组 | 否 | 用conllections.synchronizedList()包装对象或者外部用synchronized/lock控制 | 可重复 | 有序 | equals | Y |
LinkedList | 适合数据修改删除比较多的情况,遍历比较慢 | 链表 | 否 | 用conllections.synchronizedList()包装对象或者外部用synchronized/lock控制 | 可重复 | 有序 | equals | Y |
Vector | 遍历速度很快,数据结构调整的操作效率低一点 | 数组 | 是 | synchroized | 可重复 | 有序 | equals | Y |
CopyOnWriteArrayList | 所有操作都是通过数组拷贝的方式,所以对于大批量数据操作此集合比较适合 | 数组 | 是 | ReentrantLock | 可重复 | 有序 | equals | Y |
Stack | 在vector的基础上进行扩展,支持了lifo和查询对象距离栈顶距离 | 数组 | 是 | synchroized | 可重复 | 有序 | equals | Y |
HashMap | 适合无序的对象存储(多线程下put会引起死循环,CPU100%)(请重写键对象的equals和hashCode,在hash碰撞的情况下会严重影响性能) | hash表(数组中存储嵌套链对象) | 否 | 用conllections.synchronizedMap()包装对象或者外部用synchronized/lock控制 | 键不能重复 | 无序(通过Collections.sort(实现Comparator接口)进行排序) | equals | Y(键只允许一个NULL,值无要求) |
ConcurrentHashMap | 线程较多的请况下,请和其它同步方式进行性能比较(请重写键对象的equals和hashCode,在hash碰撞的情况下会严重影响性能) | 数据segment(table)存储,segment中每个对象(每个对象一个锁)是一个hash表(数组中存储嵌套链对象) | 是 | ReentrantLock(分段锁定,支持多段同时并发) | 键不能重复 | 无序(通过Collections.sort(实现Comparator接口)进行排序) | equals | Y(键只允许一个NULL,值无要求) |
ConcurrentSkipHashMap | ||||||||
EnumMap | ||||||||
HashTable | 适合线程较多的情况下使用(请重写键对象的equals和hashCode,在hash碰撞 | 是 | synchroized | 键不能重复 | 无序(通过Collections.sort(实现Comparator接口)进行排序) | equals | N(值/值不能为NULL) | |
IdentityHashMap | 不考虑对比方式的情况下,此集合的性能优于HashMap(hash方式为线性探头,优于嵌套链) | hash表(数组) | 否 | 用conllections.synchronizedList()包装对象或者外部用synchronized/lock控制 | 键不能重复 | 无序(通过Collections.sort(实现Comparator接口)进行排序) | 比较引用(内存地址) | Y(键只允许一个NULL,值无要求) |
LinkedHashMap | ||||||||
Properties | 此对象是对HashTable的扩展,允许通过流装载内容,key和value为非string的情况下会引起一定异常(取值为空等) | 两个hash表(其中一个是默认hash表,即第一个hash表中为空则检索第默认hash表) | 是 | synchroized | 键不能重复 | 无序(通过Collections.sort(实现Comparator接口)进行排序) | equals | Y(键只允许一个NULL,值无要求) |
TreeMap | ||||||||
ConcurrentSkipListSet | ||||||||
CopyOnWriteArraySet | ||||||||
EnumSet | ||||||||
HashSet | ||||||||
LinkedHashSet | ||||||||
TreeSet | ||||||||
ArrayBlockingQueue | ||||||||
ArrayDeque | ||||||||
ConcurrentLinkedQueue | ||||||||
DelayQueue | ||||||||
LinkedBlockingDeque | ||||||||
LinkedBlockingQueue | ||||||||
LinkedList | ||||||||
PriorityBlockingQueue |
类名 | 类说明 | 数据结构 | 线程安全 | 同步方式 | 可重复 | 顺序 | 对比方式 | 存储null |
ArrayList | 遍历速度很快,数据结构调整效率低一点 | 数组 | 否 | 用conllections.synchronizedList()包装对象或者外部用synchronized/lock控制 | 可重复 | 有序 | equals | Y |
LinkedList | 适合数据修改删除比较多的情况,遍历比较慢 | 链表 | 否 | 用conllections.synchronizedList()包装对象或者外部用synchronized/lock控制 | 可重复 | 有序 | equals | Y |
Vector | 遍历速度很快,数据结构调整的操作效率低一点 | 数组 | 是 | synchroized | 可重复 | 有序 | equals | Y |
CopyOnWriteArrayList | 所有操作都是通过数组拷贝的方式,所以对于大批量数据操作此集合比较适合 | 数组 | 是 | ReentrantLock | 可重复 | 有序 | equals | Y |
Stack | 在vector的基础上进行扩展,支持了lifo和查询对象距离栈顶距离 | 数组 | 是 | synchroized | 可重复 | 有序 | equals | Y |
HashMap | 适合无序的对象存储(多线程下put会引起死循环,CPU100%)(请重写键对象的equals和hashCode,在hash碰撞的情况下会严重影响性能) | hash表(数组中存储嵌套链对象) | 否 | 用conllections.synchronizedMap()包装对象或者外部用synchronized/lock控制 | 键不能重复 | 无序(通过Collections.sort(实现Comparator接口)进行排序) | equals | Y(键只允许一个NULL,值无要求) |
ConcurrentHashMap | 线程较多的请况下,请和其它同步方式进行性能比较(请重写键对象的equals和hashCode,在hash碰撞的情况下会严重影响性能) | 数据segment(table)存储,segment中每个对象(每个对象一个锁)是一个hash表(数组中存储嵌套链对象) | 是 | ReentrantLock(分段锁定,支持多段同时并发) | 键不能重复 | 无序(通过Collections.sort(实现Comparator接口)进行排序) | equals | Y(键只允许一个NULL,值无要求) |
ConcurrentSkipHashMap | ||||||||
EnumMap | ||||||||
HashTable | 适合线程较多的情况下使用(请重写键对象的equals和hashCode,在hash碰撞 | 是 | synchroized | 键不能重复 | 无序(通过Collections.sort(实现Comparator接口)进行排序) | equals | N(值/值不能为NULL) | |
IdentityHashMap | 不考虑对比方式的情况下,此集合的性能优于HashMap(hash方式为线性探头,优于嵌套链) | hash表(数组) | 否 | 用conllections.synchronizedList()包装对象或者外部用synchronized/lock控制 | 键不能重复 | 无序(通过Collections.sort(实现Comparator接口)进行排序) | 比较引用(内存地址) | |
LinkedHashMap | ||||||||
Properties | 此对象是对HashTable的扩展,允许通过流装载内容,key和value为非string的情况下会引起一定异常(取值为空等) | 两个hash表(其中一个是默认hash表,即第一个hash表中为空则检索第默认hash表) | 是 | synchroized | 键不能重复 | 无序(通过Collections.sort(实现Comparator接口)进行排序) | equals | Y(键只允许一个NULL,值无要求) |
TreeMap | ||||||||
ConcurrentSkipListSet | ||||||||
CopyOnWriteArraySet | ||||||||
EnumSet | ||||||||
HashSet | ||||||||
LinkedHashSet | ||||||||
TreeSet | ||||||||
ArrayBlockingQueue | ||||||||
ArrayDeque | ||||||||
ConcurrentLinkedQueue | ||||||||
DelayQueue | ||||||||
LinkedBlockingDeque | ||||||||
LinkedBlockingQueue | ||||||||
LinkedList | ||||||||
PriorityBlockingQueue |
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于