Потоковая групповая входящая сортировка событий ⇐ JAVA

Программисты JAVA общаются здесь
Anonymous
Потоковая групповая входящая сортировка событий

Сообщение Anonymous »

У меня есть серия событий, каждое событие содержит метку времени, устройство, серийный номер и измерение.

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

class Event {
private String device;
private String description;
private String serialnumber;
private Measurement measurement;
}

class Measurement {
private LocalDateTime timestamp;
private int value;
}
У меня есть поток этих событий, и я хотел бы объединить их в более простую структуру, отбросив серийный номер, затем сгруппировав их по устройствам, а затем отсортировав измерения по временной метке и значение.

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

{device: "device_1", description: "first device", serialnumber: "1", measurement: { timestamp: 2022-04-23T18:20:22Z, value: 180}}
{device: "device_2", description: "second device", serialnumber: "2", measurement: { timestamp: 2022-04-23T18:20:28Z, value: 120}}
{device: "device_2", description: "second device", serialnumber: "2", measurement: { timestamp: 2022-04-23T18:20:20Z, value: 160}}
{device: "device_1", description: "first device", serialnumber: "1", measurement: { timestamp: 2022-04-23T18:20:22Z, value: 170}}

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

[
{
device: "device_1",
description: "first device",
measurements: [
{ timestamp: 2022-04-23T18:20:22Z, value: 170},
{ timestamp: 2022-04-23T18:20:22Z, value: 180}
]
},
{
device: "device_2",
description: "second device",
measurements: [
{ timestamp: 2022-04-23T18:20:20Z, value: 160},
{ timestamp: 2022-04-23T18:20:28Z, value: 120}
]
}
]
Мне удалось получить необходимый формат, создав класс «строитель», в который вы можете вставлять события, которые затем обрабатываются и добавляются к элементам данных в правильном формате/порядке.
Однако, я думаю, было бы лучше как-то добиться этого на лету без еще одного дополнительного класса, а используя потоковые методы groupingBy и toMap (и другие?).

Подробнее здесь: https://stackoverflow.com/questions/719 ... ort-events

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