Java两个集合取交集详解(java8两个集合取交集)

一、集合概述

集合是Java中的一种数据类型,可以用来存储多个数据对象,而不需要考虑它们的数据类型。Java集合可以分为两大类,一类是集合接口,主要定义了对集合进行操作的方法;另一类是集合类,实现了对集合接口的具体实现。Java中常用的集合类有List、Set和Map。

二、集合取交集的意义

在实际开发中,经常需要对两个集合取交集,例如在对比用户选择的课程和课程列表时,需要找出两者共有的课程。Java提供了多种方法来实现集合的交集操作,可以根据实际需要选择使用。

三、集合取交集的方法

Java提供了多种方法用来取两个集合的交集,下面介绍三种常用方法的具体实现:

1. retainAll()方法

retainAll()方法是Java中集合类Set的方法之一,用于获取两个集合的交集。下面是一个示例代码:

Set set1 = new HashSet(Arrays.asList(1, 2, 3, 4, 5));
Set set2 = new HashSet(Arrays.asList(3, 4, 5, 6, 7));

set1.retainAll(set2); // 取set1和set2的交集
System.out.println(set1); // 输出[3, 4, 5]

在上述代码中,首先通过Arrays.asList()方法将一些整数添加到两个Set集合中,然后使用retainAll()方法取集合set1和集合set2的交集。最终输出的结果为[3, 4, 5]。

2. removeAll()方法

removeAll()方法是Java中集合类Collection的方法之一,用于获取两个集合不同的元素。可以通过两次使用removeAll()方法找到两个集合的交集。下面是一个示例代码:

Set set1 = new HashSet(Arrays.asList(1, 2, 3, 4, 5));
Set set2 = new HashSet(Arrays.asList(3, 4, 5, 6, 7));

// 两次使用removeAll()方法去除不同的元素
set1.removeAll(Collections.singleton(set2));
set2.removeAll(Collections.singleton(set1));

System.out.println(set1); // 输出[3, 4, 5]

在上述代码中,首先通过Arrays.asList()方法将一些整数添加到两个Set集合中。然后两次使用removeAll()方法,分别去除两个集合中不同的元素。最终输出的结果为[3, 4, 5]。

3. 使用stream()方法和filter()方法

Java 8引入了stream()和filter()方法,可以通过这两个方法将集合转换为流,进而进行过滤操作。下面是一个示例代码:

Set set1 = new HashSet(Arrays.asList(1, 2, 3, 4, 5));
Set set2 = new HashSet(Arrays.asList(3, 4, 5, 6, 7));

Set intersect = set1.stream().filter(set2::contains).collect(Collectors.toSet());

System.out.println(intersect); // 输出[3, 4, 5]

在上述代码中,首先通过Arrays.asList()方法将一些整数添加到两个Set集合中。然后使用stream()方法将集合set1转换为流,使用filter()方法过滤掉不包含在集合set2中的元素,最终使用collect()方法将流转换为Set类型结果集。

四、总结

本文介绍了三种常用的Java集合取交集的方法,分别是retainAll()方法、removeAll()方法和使用stream()方法和filter()方法。开发者可以根据实际需要选择不同的方法来实现交集操作。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注