首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java中两个列表的交集

在Java中,可以使用集合类来求两个列表的交集。常用的集合类有ArrayList和HashSet。

  1. ArrayList:ArrayList是Java中的动态数组,可以存储任意类型的对象。可以使用ArrayList的retainAll()方法来求两个列表的交集。该方法会修改调用它的ArrayList,使其只保留与指定集合相同的元素。

示例代码:

代码语言:java
复制
ArrayList<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
ArrayList<Integer> list2 = new ArrayList<>(Arrays.asList(4, 5, 6, 7, 8));

list1.retainAll(list2);

System.out.println("交集:" + list1);

输出结果:

代码语言:txt
复制
交集:[4, 5]

推荐的腾讯云相关产品:腾讯云云数据库 TencentDB,提供高性能、可扩展的数据库服务,适用于各种应用场景。

产品介绍链接地址:腾讯云云数据库 TencentDB

  1. HashSet:HashSet是Java中的集合类,它实现了Set接口,不允许有重复元素。可以使用HashSet的retainAll()方法来求两个列表的交集。该方法会修改调用它的HashSet,使其只保留与指定集合相同的元素。

示例代码:

代码语言:java
复制
HashSet<Integer> set1 = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5));
HashSet<Integer> set2 = new HashSet<>(Arrays.asList(4, 5, 6, 7, 8));

set1.retainAll(set2);

System.out.println("交集:" + set1);

输出结果:

代码语言:txt
复制
交集:[4, 5]

推荐的腾讯云相关产品:腾讯云云数据库 TencentDB,提供高性能、可扩展的数据库服务,适用于各种应用场景。

产品介绍链接地址:腾讯云云数据库 TencentDB

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

java计算两个数组交集_回顾面试题:计算两个数组交集

参考链接: Java程序计算两组交集 背景  工作多年,语言经历过C#,JAVA。...,数组元素无序且有可能存在重复元素,请输出两个数组交集。原题大意是这样,细节可能有出入。  ...,可以将数组元素增多,文中只是示意写了几个元素,实际测试过程可以增大元素个数。...利用java已有结构Set如何?  继承了Collection接口,包含一个retainAll方法,我们利用Set可以非常轻松来完成两个数组交集。...,比较数组元素扩大到随机生成10000个int)  将原数组进行排序,然后将数组加入到队列,拿元素个数较小做为循环条件,比较两个队列peek数值。

1.3K20

两个数组交集

本文链接:https://blog.csdn.net/weixin_43908900/article/details/102591900 题目:给定两个数组,编写一个函数来计算它们交集。...我们可以不考虑输出结果顺序。 首先说一下我自己(菜鸡)思路:我先是想先去重第第一个数组(nums1),然后循环判断值是否在nums2,有的话,添加新列表。...O(n)O(n) 时间用于转换 nums1 在集合,O(m)O(m) 时间用于转换 nums2 到集合,并且平均情况下,集合操作为 O(1)O(1)) 空间复杂度:O(m+n)O(m+n),最坏情况是数组所有元素都不同...对于无所不能python 来说,内置了交集方法,看看下面的操作例3: class Solution: def intersection(self, nums1, nums2):...空间复杂度:最坏情况是 O(m+n)O(m+n),当数组元素全部不一样时。 只能说还是太菜。。。。。。。。

1.6K00

两个数组交集

两个数组交集 给定两个数组,编写一个函数来计算它们交集。...,计算两个数组交集最简单方式就是遍历数组nums1,对于其中每个元素,遍历数组nums2判断该元素是否在数组nums2,如果存在,则将该元素添加到返回值,这样方式时间复杂度是O(mn),在这里使用排序加双指针方式...,首先对于两个数组分别进行排序,之后分别对于两个数组设立指针进行遍历,对比两个指针所指向元素,较小指针后移,如果相等则判断是否已经在目标数组,不在则将其推入数组,之后同时将两个指针后移,最终返回目标数组即可...首先将两个数组分别从小到大进行排序,之后定义目标数组target,以及两个指针i、k与两个数组长度n1、n2,定义循环,在两个指针分别小于其指向目标数组长度下执行循环,如果i指针指向值小于k指针指向值...,不相等则将值推入数组,这样用来进行去重操作,之后将两个指针分别后移,循环结束后返回目标数组即可。

1.2K30

【Leetcode -349.两个数组交集 -350.两个数组交集Ⅱ】

Leetcode -349.两个数组交集 题目:给定两个数组 nums1 和 nums2 ,返回 它们交集 。 输出结果每个元素一定是 唯一 。我们可以 不考虑输出结果顺序 。...1000); int len = 0; int hash[1000] = { 0 }; //将数组nums1每个元素作为hash数组下标,若出现过就标记为...//遍历nums2数组,检查以nums2作为hash数组下标,若以这个数作为下标的hash数组数已经被标记为1, //证明已经出现过,就将它放进已开辟好数组p,...len *returnSize = len; return p; } Leetcode - 350.两个数组交集Ⅱ 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组交集...返回结果每个元素出现次数,应与元素在两个数组中都出现次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果顺序。

7110

两个数组交集II

JavaScript实现LeetCode第350题:两个数组交集II 题目描述 给定两个数组,编写一个函数来计算它们交集。...O(n^2) 使用 Map 在 实现 349.两个数组交集[1],我们使用 Set来实现线性时间复杂度,在这里我们要使用 Map 来跟踪每个数字出现次数 现在 Map 记录一个数组存在数字和对应次数...将两个数组进行排序,然后用双指针顺序查找相同元素 时间复杂度O(max(nlogn, mlogm, n+m)),空间复杂度O(1) (n,m分别为两个数组长度) 如果是进阶问题一已排序数组,则只需...两个数组交集 II [2] 参考资料 [1]349.两个数组交集: https://leetcode-cn.com/problems/intersection-of-two-arrays/ [2]Leetcode350...两个数组交集 II : https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/solution/liang-ge-shu-zu-de-jiao-ji-ii-by-leetcode

92440

两个数组交集II

两个数组交集II 给定两个数组,编写一个函数来计算它们交集。...输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2] 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[4,9] 说明 输出结果每个元素出现次数...,应与元素在两个数组中出现次数最小值一致。...,而Js对象也是以HashTable进行存储,便可以直接利用Js对象来实现哈希表,请注意题目要求结果每个元素出现次数应与元素在两个数组中出现次数最小值一致,根据这个要求那么需要在哈希表记录值出现次数...,然后遍历第二个数组nums2,直接判断在哈希表是否定义该key,如果定义且其计数值大于0,那么就将哈希表该key计数值自减,然后将该key推入数组,循环结束后返回目标数组即可。

1.2K10

区间列表交集

本文最后更新于 484 天前,其中信息可能已经有所发展或是发生改变。 一、思路 这个区间问题,在两个列表里,互相比较。采用双指针是实现这个过程。 分为两种情况,相交和不相交。...相交情况,end取两个区间最大值。不相交时,看哪个区间大,当前end是小区间最大值。下一对start,end取大个区间。 什么时候指针移动呢?根据两个当前区间最大值,小个指针就往前移。...二、问题 给定两个由一些 闭区间 组成列表,firstList 和 secondList ,其中 firstList[i] = [starti, endi] 而 secondList[j] = [startj...每个区间列表都是成对 不相交 ,并且 已经排序 。 返回这 两个区间列表交集 。 形式上,闭区间 [a, b](其中 a <= b)表示实数 x 集合,而 a <= x <= b 。...两个闭区间 交集 是一组实数,要么为空集,要么为闭区间。例如,[1, 3] 和 [2, 4] 交集为 [2, 3] 。

24930
领券