Потоковая групповая входящая сортировка событий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
Ответить

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

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

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

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

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