【发布时间】:2018-09-09 22:22:05
【问题描述】:
我想在 Java 中的一些类之间进行转换以显示在表格中。
我收到了List<Version>(删除了 getter/setter 以使其更短):
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) 是不正确的服务器,例如,我收到了至少 7 个项目的List<Version>(3 个来自 DEV,4 个来自英国),恰好有 3 个列表中每个项目(a、b 和 c)中的作业,最后,对于 a,我将在作业 a 的所有 7 个条目中拥有版本 1.1.1,而对于 @ 987654334@ 我将在 DEV 中拥有所有 3 个版本 10.0.1,但在英国的服务器 uk-4.lan 中拥有 3 个版本 10.0.0 和 1 个版本 10.0.1。 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)", ""),
)
);
但是,如果你告诉我如何使用另一种类型的结构生成表格,它也是有效的。
非常感谢, 若昂
【问题讨论】:
-
您的问题不清楚,我们无法回答。请解释输入和期望的输出。
-
我相信@korolar 有一个很好的输入示例,而输出将是一个变量 Map
> 其中哪个整数代表表格的行和 List 将是列值。最后我想看一张桌子,不需要是地图,可以是别的东西。干杯,若昂
标签: java list lambda hashmap set