Я хотел бы сделать преобразование между некоторыми классами в Java для отображения в таблице.
Я получаю List<Version>
(удален метод получения / установки, чтобы сделать его короче):
public class Version {
private String server;
private List<Job> jobs;
}
public class Job {
private String name;
private String version;
}
Теперь у меня есть инструмент для проверки данных серверов для всех заданий:
- Каждый элемент списка представляет собой информацию об одном сервере, поэтому несколько серверов содержат несколько заданий, но у каждого из серверов одинаковые задания, но версия может отличаться.
- Итак, Version.server
- это имя сервера, Job.name
- имя задания, а Job.version
- версия задания.
- Кроме того, все серверы запускаются с одинаковыми именами, например: dev-1.lan, dev-2.lan, uk-1.lan, us-1.lan и т. Д .;
Благодаря @Korolar, вот правильный ввод:
var input = List.of(
new Version("dev-1.lan", List.of(
new Job("a", "1.1.1"),
new Job("b", "10.0.1"),
new Job("c", "2.0.1")
)),
new Version("dev-2.lan", List.of(
new Job("a", "1.1.1"),
new Job("b", "10.0.1"),
new Job("c", "2.0.1")
)),
new Version("dev-3.lan", List.of(
new Job("a", "1.1.1"),
new Job("b", "10.0.1"),
new Job("c", "2.0.2")
)),
new Version("uk-1.lan", List.of(
new Job("a", "1.1.1"),
new Job("b", "10.0.0"),
new Job("c", "2.0.2")
)),
new Version("uk-2.lan", List.of(
new Job("a", "1.1.1"),
new Job("b", "10.0.0"),
new Job("c", "2.0.2")
)),
new Version("uk-3.lan", List.of(
new Job("a", "1.1.1"),
new Job("b", "10.0.0"),
new Job("c", "2.0.2")
)),
new Version("uk-4.lan", List.of(
new Job("a", "1.1.1"),
new Job("b", "10.0.1"),
new Job("c", "2.0.2")
))
);
Я хочу преобразовать его в таблицу, чтобы ее было легче читать. Где я хочу объединить задания с одинаковыми именем и версией и, если версия не совпадает, добавить еще одну строку и указать, какой сервер не с той же версией, например:
+------------+--------------+------------+
| job | DEV | UK |
+------------+--------------+------------+
| a | 1.1.1 | 1.1.1 |
| b | 10.0.1 | 10.0.0 |
| b | | 10.0.1 (4) |
| c | 2.0.1 | 2.0.2 |
| c | 2.0.1 (3) | |
+------------+--------------+------------+
Хорошо, так что, как вы можете видеть, (x) является сервером, который не прав, например, я получил List<Version>
по крайней мере 7 предметов (3 от DEV и 4 от UK), с ровно 3 задания в каждом элементе списка (a
, b
и c
) и, наконец, для a
у меня будет версия 1.1.1 во всех 7 записях для задания a
, а для b
Я бы имел все 3 версии 10.0.1 в DEV, но 3 версии 10.0.0 и 1 версию 10.0.1, которая находится на сервере uk-4.lan в Великобритании. Аналогичные результаты будут иметь место и для c
, но сервер с другими результатами будет сервером dev-3.lan.
Теперь мой вопрос: как я могу преобразовать List<Version>
в простой List<List<String>>
для представления этой таблицы или чего-то подобного? Не беспокойтесь о печати, потому что я уже сделал эту часть.
Итак, я ожидаю, что мой результат будет примерно таким:
var expectedOutput = List.Of
List.of("apps","DEV", "Uk"),
List.of("a", "1.1.1", "1.1.1"),
List.of("b", "10.0.1", "10.0.0"),
List.of("b", "", "10.0.1 (4)"),
List.of("c", "2.0.1", "2.0.2"),
List.of("c", "2.0.2 (3)", ""),
)
);
Но если вы покажете мне, как я могу сгенерировать таблицу, используя структуру другого типа, это также допустимо.
Большое спасибо,
Joao