Java 中Set 和 List互相转换

培训教学 潘老师 2个月前 (10-07) 91 ℃ (0) 扫码查看

在 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互相转换的全部内容。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/teach/9357.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】