【发布时间】:2017-01-13 17:10:25
【问题描述】:
我有一个List<Computer>。每台计算机都有一个 CPU 列表和一个主机名。
所以,假设我有:
List<Computer> computers
我可以打电话
List<CPU> CPUs = computer.getCPUs();
我可以打电话
String hostname = computer.getHostName();
我想要做的是,使用 Streams,获取一个 Map,其中包含作为键的 CPU 和作为字符串的主机名。同一台计算机中的同一 CPU 将复制主机名。
我该怎么做?
Java8 之前的代码是这样的:
public Map<CPU, String> getMapping(List<Computer> computers) {
Map<CPU, String> result = new HashMap<>();
for (Computer computer : computers) {
for (CPU cpu : computer.getCPUs()) {
result.put(cpu, computer.getHostname());
}
}
return result;
}
【问题讨论】:
-
computer和computers是什么关系。如果您希望您的问题能够继续存在,请添加完成您的任务的 Java 8 之前的代码。 -
谢谢,我添加了 pre Java8 代码
-
我认为没有比您已有的更好的流和 lambdas 解决方案
-
如果同一个 CPU 链接到两个以上的主机名会发生什么?
标签: java java-8 java-stream