很抱歉,如果以前有人问过我,但是我找不到与我的问题相似的东西。
因此,我所拥有的是一个包含ArrayList
个值的对象的列表。
例如:
public class MyClass {
List<Long> bets = new ArrayList<>();
....
}
List<MyClass> myClassList = currencyMap.get(currencyCode);
我一直在尝试某些方法,但是我认为我的解决方案不太可行:
for (int i = 0; i < myClassList.size(); i++) {
if (i + 1 >= myClassList .size()) {
break;
}
myClassList.get(i).getBets().retainAll(myClassList.get(i + 1).getBets());
}
所以我现在想做的是在bets
列表中的所有MyClass
列表上找到交点。
答案 0 :(得分:3)
您可以使用reduce
:
myClassList.stream()
.map(MyClass::getBets)
.reduce((l1, l2) -> l1.stream()
.filter(l2::contains)
.collect(Collectors.toList()))
.orElse(new ArrayList<Long>());
reduce
操作获取两个连续的列表,并产生一个中间元素和两个原始列表中的元素。