测试两个集合是否与java流共享3个元素

我需要一个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流操作来做到这一点。

谢谢。


杨魅力
浏览 345回答 2
2回答

jeck猫

使用Stream.count如private&nbsp;boolean&nbsp;testSets(Set<Integer>&nbsp;setOne,&nbsp;Set<Integer>&nbsp;setTwo)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;setOne.stream().filter(setTwo::contains).count()&nbsp;>&nbsp;2;}或者添加它,如果早期找到两个以上的元素,则避免迭代整个集合,limit用作:return&nbsp;setOne.stream().filter(setTwo::contains).limit(3).count()&nbsp;>&nbsp;2;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java