原文: https://javatutorial.net/choose-the-right-java-collection

Java 为您提供了多种收集实现供您选择。 通常,您将始终为您的编程任务寻找性能最佳的集合,在大多数情况下为ArrayListHashSetHashMap。但是请注意,如果您需要某些特殊功能(例如排序或排序),则可能需要进行特殊的实现。 该 Java 集合教程不包括WeakHashMap等很少使用的类,因为它们是为非常特定或特殊任务设计的,因此在 99% 的情况下都不应该选择它们。

如果您需要深入了解特定集合的实现方式,则可能需要阅读官方的集合框架教程

首先让我们看下面的流程图。 它将帮助您根据要存储到此集合中的数据确定要使用的集合接口。

选择合适的 Java 集合 - 图1

这里的主要规则是:如果您需要存储映射了键的值,请转到Map接口,否则,请使用List表示可能重复的值,如果您不想在集合中使用重复的值,请最终使用Set接口。

选择正确的 Java Map接口

HashMap –如果迭代时项目的顺序对您不重要,请使用此实现。与TreeMapLinkedHashMap相比,HashMap具有更好的性能。

TreeMap – 已排序和排序,但比HashMap慢。TreeMap根据其比较器具有键的升序

LinkedHashMap – 在插入过程中按键对项目排序

选择正确的 Java List接口

ArrayList –插入期间对项目进行排序。与对LinkedLists的搜索操作相比,对ArrayLists的搜索操作更快

LinkedList – 已快速添加到列表的开头,并通过迭代从内部快速删除

选择正确的 Java Set接口

HashSet – 如果迭代时项目的顺序对您不重要,请使用此实现。与TreeSetLinkedHashSet相比,HashSet具有更好的性能

LinkedHashSet – 在插入过程中排序元素

TreeSet – 根据其比较器,按键的升序排序