首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Java8匹配方法比较两个列表

使用Java8匹配方法比较两个列表
EN

Stack Overflow用户
提问于 2018-10-28 16:18:57
回答 3查看 124关注 0票数 2

使用Java8匹配方法,我能够比较两个列表,并在两个列表中都有匹配的情况下获得布尔结果。

请找到我下面的代码。

代码语言:javascript
复制
public class StreamTest2 {

    public static void main(String args[]) {

        List<Integer> aList = Arrays.asList( new Integer[] {
                1,3,5,6,8
        });

        List<Integer> bList = Arrays.asList( new Integer[] {
                10, 89, 8, 9
        });

        //If any number in List1 present in List2
        System.out.println("If any number present in aList is present in bList : "+aList.stream().anyMatch(num -> bList.contains(num)));

    }

}

输出:

代码语言:javascript
复制
If any number present in aList is present in bList : true

但是,我想打印两个列表中的匹配号,如何打印匹配号?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-28 16:21:58

您可以使用filterfindFirst

代码语言:javascript
复制
System.out.println("If any number present in aList is present in bList : "+aList.stream().filter(num -> bList.contains(num)).findFirst().orElse(null));

如果找到了匹配的数字,这将打印出来(它将在第一个匹配时停止),如果没有找到匹配,则打印null

或者,您可以将所有匹配项收集到一个List

代码语言:javascript
复制
System.out.println("If any number present in aList is present in bList : "+aList.stream().filter(num -> bList.contains(num)).collect(Collectors.toList());
票数 2
EN

Stack Overflow用户

发布于 2018-10-28 16:25:32

试试这个

代码语言:javascript
复制
aList.stream().filter(bList::contains).collect(Collectors.toSet());
票数 2
EN

Stack Overflow用户

发布于 2018-10-29 03:03:15

之所以在调用retainAll时得到java.lang.UnsupportedOperationException,是因为Arrays#asList返回一个由固定大小的数组支持的ArrayList。任何向这些列表中删除或添加元素的尝试都将导致上述UnsupportedOperationException

正如@LuCio所建议的,解决方案是用ArraysList构造函数调用包装Arrays.asList部件,如下所示:

代码语言:javascript
复制
List<Integer> aList = new ArrayList(Arrays.asList(1,3,5,6,8));
List<Integer> bList = new ArrayList(Arrays.asList(10, 89, 8, 9));

您应该能够调用:

代码语言:javascript
复制
aList.retainAll(bList);

请记住,这将修改原始的aList列表。如果您需要保留aList的状态,那么我建议在调用retainAll之前复制一份aList。在这种情况下,建议使用的Stream API中的一个可能更适合。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53029599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档