Java集合

原文地址:http://www.logicbig.com/tutorials/core-java-tutorial/java-collections/java-collection-cheatsheet/
翻译类型:参考总结
文章状态:草稿
绘图工具 : Gliffy (Chrome扩展)

我为人人,人人为我,多多指正,多多建议,不断完善,共建社区,编不下去了~

1.Java集合接口

Java集合_第1张图片
interface1.png

2.如何选择

2.1一般集合的选择

Java集合_第2张图片
howtochoose.png

2.2 队列

队列的选择其实比较直观,队列的remove()方法在删除一个元素的同时会返回被删除的元素。如果你需要按特定顺序排列的队列,选择PriorityQueue,否则选择ArrayQueue。

2.3 是否需要线程安全?

当你需要线程安全安全的集合类时,你应该通过以下方法将一个非线程安全的集合转换成一个线程安全的集合:
Collection synchronizedCollection(Collection c)
Set synchronizedSet(Set s)
SortedSet synchronizedSortedSet(SortedSet s)
NavigableSet synchronizedNavigableSet(NavigableSet s)
List synchronizedList(List list)

以上方法,会将所有方法都同步化(在'this'上加锁),这种一刀切的方法性能上不太好,当需要强调性能的时候,我们应当使用java.util.concurrent包中相应的集合实现类。我会在另一篇文章中详细介绍java.util.concurrent中的集合类。

2.4 只读的集合

有些时候,我们需要将一个集合设置成只读:
Collection unmodifiableCollection(Collection c)
Set unmodifiableSet(Set s)
SortedSet unmodifiableSortedSet(SortedSet s)
NavigableSet unmodifiableNavigableSet(NavigableSet s)
List unmodifiableList(List list)

3.集合实现类明细

实现类 接口 是否线程安全 允许重复 允许null 顺序
ArrayList List 插入顺序
LinkedList List, Deque 插入顺序
Vector List 插入顺序
Stack List 继承Vector LIFO
HashSet Set 不保证顺序
LinkedHashSet Set 插入顺序
TreeSet Set Comparator或Comparable
EnumSet Set 枚举类型的定义顺序
PriorityQueue Queue Comparator或Comparable
ArrayDeque Deque 插入顺序

你可能感兴趣的:(Java集合)