一、概述
在本教程中,我们将借助一个简单的示例来讨论Java 中Set
和List
之间的区别。
2. 概念差异
List
和Set
都是JavaCollections
的成员。但是,有一些重要的区别:
List
可以包含重复项,但Set
不能List
将保留插入顺序,但Set
可能会也可能不会由于插入顺序可能不会在
Set
中维护,因此它不允许像在List
中那样进行基于索引的访问
请注意,有一些Set
接口的实现保持顺序,例如LinkedHashSet
。
3. 代码示例
3.1。允许重复
List
允许添加重复项。但是,它不适用于Set
:
@Test public void givenList_whenDuplicates_thenAllowed(){ List<Integer> integerList = new ArrayList<>(); integerList.add(2); integerList.add(3); integerList.add(4); integerList.add(4); assertEquals(integerList.size(), 4); }
@Test public void givenSet_whenDuplicates_thenNotAllowed(){ Set<Integer> integerSet = new HashSet<>(); integerSet.add(2); integerSet.add(3); integerSet.add(4); integerSet.add(4); assertEquals(integerSet.size(), 3); }
3.2.维护广告订单
一个Set
根据实现维护顺序。例如,HashSet
不能保证保持顺序,但LinkedHashSet
可以。让我们看一个使用LinkedHashSet
进行排序的示例:
@Test public void givenSet_whenOrdering_thenMayBeAllowed(){ Set<Integer> set1 = new LinkedHashSet<>(); set1.add(2); set1.add(3); set1.add(4); Set<Integer> set2 = new LinkedHashSet<>(); set2.add(2); set2.add(3); set2.add(4); Assert.assertArrayEquals(set1.toArray(), set2.toArray()); }
由于不能保证Set
保持顺序,因此无法对其进行索引。
4。结论
在本教程中,我们看到了Java 中List
和Set
之间的区别。
0 评论