使用java流比较两个带有字段的对象列表

罗希特

我需要使用流将两个对象列表与其字段值进行比较

例如

List<Object> originalObjectList
List<Object> modifiedObjectList

我需要在字段级别从两个列表中找到对象的差异,并获取如下差异列表

我正在尝试这种方法

originalObjectList
.stream()
.map(originalObject -> modifiedObjectList
.stream()
.map(modifiedObject -> findDifferences(originalObject.getField1(), modifiedObject.getField1())
.collect(// not understanding how to collect the result returned from findDifferences)

//Method

Result findDifferences(String originalValue, String modifiedValue){
Result result = new Result();

if(StringUtils.isEmpty(originalValue) && StringUtils.isNotEmpty(modifiedValue)){
     result.setStatus("ADDED");
     result.setValue(modifiedValue);
}
else if(StringUtils.isNotEmpty(originalValue) && StringUtils.isEmpty(modifiedValue)){
          result.setStatus("DELETED");
          result.setValue(originalValue);
}
else if(!originalValue.equals(modifiedValue)){
          result.setStatus("MODIFIED");
          result.setValue(modifiedValue);
        }
return result;
}

结果应包含字段的值和字段的状态,如“已删除”、“已修改”或“已添加” 请建议是否有更好的方法来实现这一目标?我是 Java 流的新手

尤金·科尔托夫

像这样的东西。随意问的问题。

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class App6 {
    public static final String ADDED = "ADDED";
    public static final String DELETED = "DELETED";
    public static final String MODIFIED = "MODIFIED";
    public static final String NOT_MODIFIED = "NOT_MODIFIED";

    public static void main(String[] args) {
        List<A> originalObjectList = Arrays.asList(new A("a"), new A(""), new A("a"), new A("a"));
        List<A> modifiedObjectList = Arrays.asList(new A("a"), new A("b"), new A("b"), new A(""));

        List<Result> results = IntStream
                .range(0, originalObjectList.size())
                .mapToObj(i -> {
                    A original = originalObjectList.get(i);
                    A modified = modifiedObjectList.get(i);
                    return compare(original, modified);
                })
                .collect(Collectors.toList());
        System.out.println(results);
    }

    public static Result compare(A or, A mod) {
        if (or == null || mod == null) {
            throw new IllegalArgumentException("Comparable objects should not be null");
        }
        if (or.field == null || mod.field == null) {
            throw new IllegalArgumentException("Comparable fields of objects should not be null");
        }
        if (or.field.equals(mod.field)) {
            return new Result(NOT_MODIFIED, or.field);
        } else if (or.field.isEmpty() && !mod.field.isEmpty()) {
            return new Result(ADDED, mod.field);
        } else if (!or.field.isEmpty() && mod.field.isEmpty()) {
            return new Result(DELETED, or.field);
        } else {
            return new Result(MODIFIED, mod.field);
        }
    }
}

class A {
    String field;

    public A(String field) {
        this.field = field;
    }
}

class Result {
    String status;
    String value;

    public Result(String status, String value) {
        this.status = status;
        this.value = value;
    }

    @Override
    public String toString() {
        return "Result{" +
                "status='" + status + '\'' +
                ", value='" + value + '\'' +
                '}';
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

比较使用Java流两个整型数组

Java的8两个列表流

使用Java流串比较两个列表

Java的流压缩两个列表

如何比较两个ArrayList和GET列表1使用过滤器Java流

如何筛选使用Java 8个流两个列表对象?

LEFT JOIN在两个列表使用Java流

如何使用Java中的函数列表比较两个对象的字段并求和结果

Java比较两个列表

Java比较两个列表的对象值?

如何使用Java中具有不同类的两个对象和具有compare字段的列表进行过滤

高效比较Java中的两个对象列表

使用Java流将两个大小相同(类型不同)的列表合并到域对象列表中

Java流比较两个流中的对象并创建新的对象

如何通过比较Java中给定对象中的字段值来合并两个对象列表

Java8流-比较两个列表的对象值并将值添加到第一个列表的子对象?

使用带有两个列表的对象的XDocument创建XML

比较两个带有索引的列表

比较Java中的两个对象..每个对象都有两个字段

Java:比较两个列表

如何比较两个对象列表之间的字段?

使用带有两个列表作为参数的休眠方式从数据库获取对象

比较两个对象数组列表

使用Java中的可比较按两个字段升序和降序对对象列表进行排序

Python使用json load解析带有两个json对象列表的文件

使用比较函数查找两个对象列表的交集

使用 AssertJ 比较具有特定字段的“特殊”断言的两个对象

如何使用AssertJ递归比较具有不同字段名称但具有相同值的两个对象

Java从属性比较两个对象列表

TOP 榜单

热门标签

归档