我有一个List<List<Integer>> res
,比如res
的值为
[
[2, 2, 2, 2]
[2, 3, 3]
[3, 2, 3]
[3, 3, 2]
[3, 5]
[5, 3]
]
我如何使用stream
流去除res
里面的和一致的元素?
比如[2, 3, 3]、[3, 2, 3]、[3, 3, 2]
这三个的和都为8,只需保留一个。
我有一个List<List<Integer>> res
,比如res
的值为
[
[2, 2, 2, 2]
[2, 3, 3]
[3, 2, 3]
[3, 3, 2]
[3, 5]
[5, 3]
]
我如何使用stream
流去除res
里面的和一致的元素?
比如[2, 3, 3]、[3, 2, 3]、[3, 3, 2]
这三个的和都为8,只需保留一个。
8 回答6.4k 阅读
1 回答4.2k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.9k 阅读
1 回答2.2k 阅读✓ 已解决
3 回答1.7k 阅读✓ 已解决
有两个方法实现
方法一
使用
Stream<T>.distinct()
来取唯一值,不过它是根据T
的equals()
和hashCode()
来判断重复的,所以需要写一个类来包装List<Integer>
提供按 sum 判断唯一的方法然后:先封装 ⇒ 计算唯一 ⇒ 解封装 ⇒ 生成 List
方法二
直接通过
Stream<T>.filter()
来过滤掉重复的,需要一个HashSet
来保存应该判重的值。这个方法不需要另外定义一个类,只需要一个临时对象。