广州建论坛网站,统计网站访问量,建筑素材网,深圳人口标题是什么意思呢#xff1f;
假如我有一个集合对象A#xff0c;数据有1,2,3,4,5,6
另外一个集合对象B#xff0c;数据有2,4,5
那么在A中排除B拥有的数据就是 最终需要返回的结果就是1,3
那么我们一般一开始的想法其实就是在集合对象中A遍历取到每一个元素#xff0c;然…标题是什么意思呢
假如我有一个集合对象A数据有1,2,3,4,5,6
另外一个集合对象B数据有2,4,5
那么在A中排除B拥有的数据就是 最终需要返回的结果就是1,3
那么我们一般一开始的想法其实就是在集合对象中A遍历取到每一个元素然后将元素再与集合对象B中遍历取到的每一个元素做一 一对比如果在集合对象B中没有找到的话那么就取出该此时集合对象中遍历的当前元素然后放到一个最终的集合去。
所以我们就是会写两个for循环外层循环遍历集合对象A内层循环遍历集合对象B反之
外层循环遍历集合对象B内层循环遍历集合对象A也是可以的。结果都是一样的。
假如现在我们构建一个实体类叫做Entity我们看看它的结构 然后我们构造两个集合。去存放不同的Entity充当集合对象A集合对象B 集合对象A存放的是从1-10
集合对象B存放的是偶数也就是2,4,6,8,10
那么最终排除后的结果就是奇数也就是1,3,5,7,9
然后现在编写代码按照我们一开始最粗暴的想法就是两个for循环嵌套的做法 我们看一下输出结果 结果显示确实是奇数那就证明我们代码写的没问题。
那么我们可以换一种更加方便通用的思路就是用stream流的方式先做逻辑映射然后再使用filter过滤掉contains为false的数据如下 直接就可以用三行代码代替了是不是很方便。
所以模板思路就是以后我们要在哪一个集合对象里面排除另一个集合对象那么我们就将要排除的做map映射然后对另一个集合对象做filter过滤掉contains为false的就是最终的结果以这个题目就是A排除B那么就将B做map映射将A做filter过滤掉contains为false的。
如果我们要判断两个集合对象是否存在重复的。我们也可以用这个方法但是此时就对A和B没做特定哪一个做map哪一个做filter了都行的。只是我们需要将里面的那个contains过滤掉为true的然后最终结果如果返回的集合存在数据就代表有交集了有交集肯定就是出现重复的了。
也就是 输出结果重复的就是偶数2 4 6 8 10 总结
在一个集合对象中A排除另外一个集合对象B中A中拥有的数据通用思路可以直接用三行代码替换
对要排除的做map逻辑映射另外一个对象做stream流的filter过滤掉contains为false的。
SetString codeSet 排除的集合对象.stream().map().collect(Collectors.toSet()) ;
ListT res 另一个集合对象.stream().filter(arg - !codeSet.contains(arg)).collect(Collectors.toList());
return res ;
备注如果要判断两个集合对象是否存在重复的元素也是这个思路只不过是过滤掉contains为true的此时不需要按照上面那这个模板思路谁map谁filter了。
温馨提示
我们也可以导入hutool工具包然后里面其实有很多的求差集补集交集并集。
最后
如果大家觉得这篇文章对你们有所帮助的话麻烦点个免费的小赞赞谢谢也祝各位码农在未来的IT道路上越走越远