Java Stream создает новое значение свойства списка объектов, устанавливающее значение null, если оно такое же, как и преJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Java Stream создает новое значение свойства списка объектов, устанавливающее значение null, если оно такое же, как и пре

Сообщение Anonymous »

У нас есть список объектов на основе Hibernate Envers, полученный из базы данных:

Код: Выделить всё

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"));
А затем мы отфильтруем его, чтобы не повторялись элементы на основе некоторых свойств:

Код: Выделить всё

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());
Это отлично работает, наш результат:

Код: Выделить всё

[{7, A2, B3, C1},
{6, A2, B2, C0},
{4, A1, B2, C0},
{3, A1, B1, C0},
{1, A0, B1, C0},
{0, A0, B0, C0}]
Но результат, который нам нужен, — это список объектов, которые имеют только свойства, которые отличаются от предыдущего элемента из того же списка >.
Ожидаемый результат таков:

Код: Выделить всё

[{7, null, B3,   C1  },
{6, A2,   null, null},
{4, null, B2,   null},
{3, A1,   null, null},
{1, null, B1,   null},
{0, A0,   B0,   C0  }]
Когда данное свойство равно на основе предыдущего элемента из того же списка, новый объект имеет значение null.
У нас есть минимальный воспроизводимый код:
https://onecompiler.com/java/4322zgsau

Подробнее здесь: https://stackoverflow.com/questions/792 ... -same-comp
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»