Мне нужно собрать записи сущности с даты по сегодняшний день на основе значения одного атрибута. Если значение атрибута type последовательно совпадает с датой, его следует сгруппировать по дате. Поскольку дата указана последовательно, необходимо заказывать. Даже если значение атрибута типа записи отличается, остальные записи также должны быть в один и тот же день. Смотрите наглядное представление. Я пробовал это;
Map<LocalDate, List<Entity>> collection = entities.stream().collect(Collectors.groupingBy(Entity::getDate))
.entrySet().stream().sorted(Map.Entry.comparingByKey()).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new));
В моей реализации я могу собирать только по датам, но я хочу собирать по DateRange. Я хочу добиться чего-то вроде этого;
Map<DateRange, List<Entity>> collection = entities.stream()...// implementation
Entity
[
{
"id": 1,
"date": "2020-01-01",
"type": 5
},
{
"id": 2,
"date": "2020-01-01",
"type": 5
},
{
"id": 1,
"date": "2020-01-02",
"type": 5
},
{
"id": 2,
"date": "2020-01-02",
"type": 5
},
.
.
.
]
Пример
Изменение диапазона дат на основе значения атрибута type. Например, если type = 5 для всех дат, значит, все записи должны быть в одном диапазоне. Допустим, есть записи только за один год, и я предполагаю, что есть только два уникальных значения идентификатора (id = 1, id = 2), поэтому в коллекции я должен добиться этого;
[{
"From: 2020-01-01, To: 2020-12-31": [{
"record1":
{
"id": 1,
"type": "5"
},
"record2":
{
"id": 2,
"type": "5"
}
}]
}]
Другой пример
Если type = 5 для всех дат, кроме '2020-02-01', а в '2020-02-01' type = 6 для id = 1, тогда диапазоны должны быть как показано ниже. Я все еще предполагаю, что есть записи только за один год и есть только два уникальных значения идентификатора (id = 1, id = 2).
[
{
"From: 2020-01-01, To: 2020-01-31": [{
"record1":
{
"id": 1,
"type": "5"
},
"record2":
{
"id": 2,
"type": "5"
}
}],
},
{
"From: 2020-02-01, To: 2020-02-01": [{
"record1":
{
"id": 1,
"type": "6"
},
"record2":
{
"id": 2,
"type": "5"
}
}],
},
{
"From: 2020-02-02, To: 2020-12-31": [{
"record1":
{
"id": 1,
"type": "5"
},
"record2":
{
"id": 2,
"type": "5"
}
}]
}
]