Но результат, который нам нужен, — это список объектов, которые имеют только свойства, которые отличаются от предыдущего элемента из того же списка >. Ожидаемый результат таков:
Когда данное свойство равно на основе предыдущего элемента из того же списка, новый объект имеет значение null.
У нас есть минимальный воспроизводимый код: https://onecompiler.com/java/4322zgsau
У нас есть список объектов на основе Hibernate Envers, полученный из базы данных: [code]List systemAuditList = new ArrayList();
systemAuditList.add(new SystemAudit(0, "A0", "B0", "C0")); systemAuditList.add(new SystemAudit(1, "A0", "B1", "C0")); systemAuditList.add(new SystemAudit(2, "A0", "B1", "C0")); systemAuditList.add(new SystemAudit(3, "A1", "B1", "C0")); systemAuditList.add(new SystemAudit(4, "A1", "B2", "C0")); systemAuditList.add(new SystemAudit(5, "A1", "B2", "C0")); systemAuditList.add(new SystemAudit(6, "A2", "B2", "C0")); systemAuditList.add(new SystemAudit(7, "A2", "B3", "C1")); systemAuditList.add(new SystemAudit(8, "A2", "B3", "C1")); [/code] А затем мы отфильтруем его, чтобы не повторялись элементы на основе некоторых свойств: [code]var systemAuditListCorrectlyFiltered = SystemAudit.createRandomList().stream().collect(Collectors.collectingAndThen( Collectors.toCollection(() -> new TreeSet(Comparator .comparing(SystemAudit::getDescriptionFieldA) .thenComparing(SystemAudit::getDescriptionFieldB) .thenComparing(SystemAudit::getDescriptionFieldC))), ArrayList::new)) .stream() .map(SystemAuditHelper::create) .sorted(Comparator.comparing(SystemAuditHelper::getId, Comparator.nullsLast(Comparator.reverseOrder()))) .collect(Collectors.toList()); [/code] Это отлично работает, наш результат: [code][{7, A2, B3, C1}, {6, A2, B2, C0}, {4, A1, B2, C0}, {3, A1, B1, C0}, {1, A0, B1, C0}, {0, A0, B0, C0}] [/code] Но результат, который нам нужен, — это список объектов, которые имеют [b]только[/b] свойства, которые отличаются от предыдущего элемента из того же списка >. [b]Ожидаемый результат[/b] таков: [code][{7, null, B3, C1 }, {6, A2, null, null}, {4, null, B2, null}, {3, A1, null, null}, {1, null, B1, null}, {0, A0, B0, C0 }] [/code] Когда данное свойство равно на основе предыдущего элемента из того же списка, новый объект имеет значение null. У нас есть минимальный воспроизводимый код: https://onecompiler.com/java/4322zgsau
Я экспериментировал с лямбда-выражениями Java 8, чтобы упростить фильтрацию коллекций. Но я не нашел краткого способа получить результат в виде нового списка в том же операторе. Вот мой самый краткий подход на данный момент:
Я играл с Java 8 Lambdas, чтобы легко фильтровать коллекции. Но я не нашел краткого способа получить результат в качестве нового списка в том же утверждении. Вот мой самый краткий подход до сих пор: