有集合A和集合B,现在需要将两个集合中重复的元素放入到集合C中,请问你会怎么编程实现?
- 时间复杂度为O(n) 使用set去重
Set<String> set = new HashSet<>();
for (String a : list1) {
set.add(a);
}
for (String b : list2) {
if(set.contains(b)){
list3.add(b);
}
}
System.out.println(list3);
- stream流filter 第一个转set 字符串 filter过滤字符串 contain
- 用list的retain函数取交集
- 用redis的Set集合 将交集放入第三个参数
redis 支持 Set集合的数据存储,其中有三个比较特殊的方法:
sinter key [key …] 查看一个集合的全部成员,该集合是所有给定集合的交集。
sunion key [key …] 查看一个集合的全部成员,该集合是所有给定集合的并集。
sdiff key [key …] 查看所有给定 key 与第一个 key 的差集
基于RedisTemplate中的 set 集合的交,差,并集
- 判断集合是否包含value:redisTemplate.opsForSet().isMember(key, value)
- 获取两个或更多集合的交集:redisTemplate.opsForSet().intersect(key, otherKey)
- key集合与otherKey集合的交集存储到destKey集合中:redisTemplate.opsForSet().intersectAndStore(key,
otherKey, destKey) - 获取两个或者多个集合的并集:redisTemplate.opsForSet().union(key, otherKeys)
- key集合与otherKey集合的并集存储到destKey中:redisTemplate.opsForSet().unionAndStore(key,
otherKey, destKey)