拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 Java中的集合与列表

Java中的集合与列表

白鹭 - 2022-10-08 2137 0 2

一、概述

在本教程中,我们将借助一个简单的示例来讨论Java 中SetList之间的区别

2. 概念差异

ListSet都是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 中ListSet之间的区别。


标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *