我需要一个java流操作来测试两个集合是否有3个共同元素。这是我的java 7代码,工作正常:@Testpublic void testContainement(){
Set<Integer> setOne = IntStream.of(0,1,4,3)
.boxed()
.collect(Collectors.toCollection(HashSet::new));
Set<Integer> setTwo = IntStream.of(0,1,4,5)
.boxed()
.collect(Collectors.toCollection(HashSet::new));
Assertions.assertEquals(true,testSets(setOne,setTwo));}private boolean testSets( Set<Integer> setOne, Set<Integer> setTwo ) {
int counter=0;
for (int x: setOne){
if (setTwo.contains(x))
counter++;
}
return counter > 2;}我们怎么能用java流操作来做到这一点。谢谢。
2 回答
jeck猫
TA贡献1909条经验 获得超7个赞
使用Stream.count
如
private boolean testSets(Set<Integer> setOne, Set<Integer> setTwo) { return setOne.stream().filter(setTwo::contains).count() > 2;}
或者添加它,如果早期找到两个以上的元素,则避免迭代整个集合,limit
用作:
return setOne.stream().filter(setTwo::contains).limit(3).count() > 2;
添加回答
举报
0/150
提交
取消