【问题标题】:Better approach to solve the iteration解决迭代的更好方法
【发布时间】:2019-03-17 13:33:15
【问题描述】:
List<emp1> empList=new ArrayList<>();
        empList.add(new emp1(1,"code1","a1"));
        empList.add(new emp1(2,"code2","a2"));
Set<emp1> empSet=new HashSet<>();
        empSet.add(new emp1(1,"code3","a3"));

for(emp1 e:empList) {
            for(emp1 a:empSet) {
                if(e.getB().equals(a.getB())||e.getA()==a.getA()||e.getC().equals(a.getC())) {
                    System.out.println("equals");
                }
            }
        }

class emp1{
    int a;
    String b;
    String c;

如何使用 lambda 或任何其他更好的方法来实现这一点? 它应该比较列表中的每个元素以设置并判断它是否存在? 需要比较每个元素 a,b,c ,如果存在它应该返回等于

【问题讨论】:

    标签: java collections java-stream


    【解决方案1】:

    尽管他 forEach 并没有多大意义,但您可以将其实现为:

        empList.stream()
                .filter(empSet::contains)
                .map(a -> "equals")
                .forEach(System.out::println);
    

    【讨论】:

    • 需要比较每个元素 a,b,c ,如果存在它应该返回 equals。如果哈希码被覆盖,Contains 将检查所有相同的对象。但需要检查对象中的单个元素。
    猜你喜欢
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-30
    • 2021-12-11
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多