Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何比较2 List<Entity>?

如何比较2 List<Entity>?
EN

Stack Overflow用户
提问于 2019-07-03 23:10:05
回答 3查看 129关注 0票数 1

我有2列表实体,如果可能的话,我不想通过嵌套循环来比较它,

假设我有这样的实体:

代码语言:javascript
运行
AI代码解释
复制
List<Entity1> = entity1Repository.findByCode(String code);
List<Entity2> = entity2Repository.findByName(String name);

我想比较这些实体,我想要列表的结果,这个列表的值只有相同的值,

比如this=,[1, 2, 4][1,2,5]和我想要像==> [1,2]这样的结果

如何在Java中做到这一点

EN

回答 3

Stack Overflow用户

发布于 2019-07-03 23:13:18

您可以编写一个函数,该函数返回包含作为参数传递的2个列表的交叉元素的列表:

代码语言:javascript
运行
AI代码解释
复制
public <T> List<T> intersection(List<T> list1, List<T> list2) {
        List<T> list = new ArrayList<T>();

        for (T t : list1) {
            if(list2.contains(t)) {
                list.add(t);
            }
        }

        return list;
    }
票数 1
EN

Stack Overflow用户

发布于 2019-07-03 23:34:12

假设投入:

代码语言:javascript
运行
AI代码解释
复制
List<Integer> l1 = Arrays.asList(1, 2, 3, 4);
List<Integer> l2 = Arrays.asList(11, 2, 5, 4);

清单有两种方法:

代码语言:javascript
运行
AI代码解释
复制
    //method 1
    List<Integer> result = l1.stream().filter(l2::contains).collect(Collectors.toList());
    System.out.println(result);

    //method 2
    Set<Integer> s1 = new HashSet<>(l1);
    s1.retainAll(l2);

    System.out.println(s1);
    System.out.println(l1);

在method1中:您正在使用流,这是来自java的一个很棒的概念。

在method2中:您正在创建另一个集合,并在其上调用retainAll()。这将从s1中删除其他元素,但不会影响原始列表l1。

票数 1
EN

Stack Overflow用户

发布于 2019-07-03 23:44:52

您可以使用Java8StreamAPI从两个列表中获取公共元素。

List<Entity> commonEntity = entity1.stream() .filter(entity2::contains) .collect(Collectors .toList()));

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

https://stackoverflow.com/questions/56882406

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档