🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# Java 中`List`和`Set`之间的区别 > 原文: [https://beginnersbook.com/2014/07/difference-between-list-and-set-in-java/](https://beginnersbook.com/2014/07/difference-between-list-and-set-in-java/) `List`和`Set`都是接口。它们都扩展了`Collection`接口。在这篇文章中,我们讨论了 java 中`List`和`Set`接口之间的**差异。** ## `List` Vs `Set` 1)`List`是一个有序集合,它维护插入顺序,这意味着在显示列表内容时,它将按照它们插入列表的顺序显示元素。 `Set`是一个无序集合,它不保持任何顺序。 维护顺序的`Set`很少,例如`LinkedHashSet`(它按插入顺序维护元素)。 2)`List`允许重复,而`Set`不允许重复元素。如果您尝试将重复元素插入`Set`中,它将替换现有值,则`Set`的所有元素都应该是唯一的。 3)`List`实现: [`ArrayList`](https://beginnersbook.com/2013/12/java-arraylist/) , [`LinkedList`](https://beginnersbook.com/2013/12/linkedlist-in-java-with-example/)等。 `Set`实现: [`HashSet`](https://beginnersbook.com/2013/12/hashset-class-in-java-with-example/), [`LinkedHashSet`](https://beginnersbook.com/2013/12/linkedhashset-class-in-java-with-example/), [`TreeSet`](https://beginnersbook.com/2013/12/treeset-class-in-java-with-example/) 等。 4)`List`允许任意数量的空值。 `Set`最多只能有一个空值。 5) [`ListIterator`](https://beginnersbook.com/2014/06/listiterator-in-java-with-examples/)可用于在两个方向(前向和后向)遍历`List`但是它不能用于遍历`Se`。我们可以使用[迭代器](https://beginnersbook.com/2014/06/java-iterator-with-examples/)(它也适用于`List`)来遍历一个`Set`。 6)`List`接口有一个名为[`Vector`](https://beginnersbook.com/2013/12/vector-in-java/) 的遗留类,而`Set`接口没有任何遗留类。 ## 何时使用`Set`和何时使用`List`? 用法完全取决于要求: 如果要求只有唯一值,那么`Set`是您最好的选择,因为`Set`的任何实现仅维护唯一值。 如果需要维持插入顺序而不管双重性,则`List`是最佳选择。`List`接口的实现 - `ArrayList`和`LinkedList`按其插入顺序对元素进行排序。 #### 列表示例 ```java import java.util.List; import java.util.ArrayList; import java.util.LinkedList; public class ListExample { public static void main(String[] args) { List<String> al = new ArrayList<String>(); al.add("Chaitanya"); al.add("Rahul"); al.add("Ajeet"); System.out.println("ArrayList Elements: "); System.out.print(al); List<String> ll = new LinkedList<String>(); ll.add("Kevin"); ll.add("Peter"); ll.add("Kate"); System.out.println("\nLinkedList Elements: "); System.out.print(ll); } } ``` **输出:** ```java ArrayList Elements: [Chaitanya, Rahul, Ajeet] LinkedList Elements: [Kevin, Peter, Kate] ``` #### 设置示例 ```java import java.util.Set; import java.util.HashSet; import java.util.TreeSet; public class SetExample { public static void main(String args[]) { int count[] = {11, 22, 33, 44, 55}; Set<Integer> hset = new HashSet<Integer>(); try{ for(int i = 0; i<4; i++){ hset.add(count[i]); } System.out.println(hset); TreeSet<Integer> treeset = new TreeSet<Integer>(hset); System.out.println("The sorted list is:"); System.out.println(treeset); } catch(Exception e){ e.printStackTrace(); } } } ``` **输出:** ```java [33, 22, 11, 44] The sorted list is: [11, 22, 33, 44] ```