章
目
录
在 Java 中,List 和 Set 是用于存储元素的集合类型。List 是基于索引的有序集合,而 Set 是无序集合。List 允许重复元素,但 Set 只包含唯一元素。这两种集合类型非常不同,各自有其用例。
在这个 Java 教程中,学习将指定的 Set 转换为 List。同时,学习将 List 反向转换为 Set,这是从列表中移除重复元素的一个有用方法。
1.将 Set 转换为 List
我们将以不同的方式使用以下 Set 到 List 类型。
Set<Integer> set = Set.of(1, 2, 3);
1.1. 使用 List 构造函数
要将给定的 Set 转换为 List,我们可以使用 ArrayList 构造函数,并将 HashSet 作为构造函数参数传递。这将把所有元素从 HashSet 复制到新创建的 ArrayList 中。
ArrayList<Integer> arrayList = new ArrayList(set);
Assertions.assertEquals(3, arrayList.size());
1.2. 使用 List.addAll()
获得一个带有 Set 元素的 List 的另一种有用方法是创建一个空的 List 实例,并使用其 addAll() 方法将 Set 的所有元素添加到 List 中。
ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.addAll(set);
Assertions.assertEquals(3, arrayList.size());
1.3. 使用 Stream
首先将 Set 转换为 Stream,然后将 Stream 元素收集到 List 中。
List<Integer> list = set.stream().toList();
Assertions.assertEquals(3, list.size());
2. 将 List 转换为 Set
当我们想要从列表中移除重复项时,可能需要从指定的 ArrayList 创建一个 HashSet,因为集合不允许重复项。
让我们首先创建一个 List 实例,然后将其转换为 Set。该列表包含 7 个项目,但只有 4 个唯一项目。因此,在每种方法中,Set 的大小必须为 4。
List list = List.of(1, 2, 3, 3, 3, 5, 5);
2.1. 使用 Set 构造函数
与前面的示例类似,我们可以使用构造函数 HashSet(collection) 来初始化一个包含来自 ArrayList 项目的 HashSet。
Set set = new HashSet(list);
Assertions.assertEquals(4, set.size());
2.2. 使用 Set.addAll()
Set.addAll(list) 如果尚未存在,则将指定集合中的所有元素添加到此集合中。
Set set = new HashSet();
set.addAll(list);
Assertions.assertEquals(4, set.size());
2.3. 使用 Stream
与前一节类似,我们可以使用 Stream 将 set 转换为 list,如下所示:
Set<Integer> set = list.stream().collect(Collectors.toSet());
Assertions.assertEquals(4, set.size());
以下就是Java 中Set 和 List互相转换的全部内容。