【发布时间】:2015-03-13 20:21:59
【问题描述】:
我有以下代码
final Map<String, Location> map = new HashMap<>();
map.put("1", new Location("a", null));
map.put("2", new Location("b", null));
map.put("3", new Location("c", null));
final List<String> list = new ArrayList<>();
for (final Location s : map.values()) {
list.add(s.getId());
}
当我打印列表时,结果是 a,b,c(如预期)。
for (final String string : list) {
System.out.println(string);
}
在 Java6 中是否有更好的方法可以在不使用 for 循环的情况下获取 Id。
根据 Java8,引用代码形式 @rohit-jain 回答
final List<String> list = map.values().stream().map(loc -> loc.getId()).collect(Collectors.toList());
在 java6 中有没有这样的 consise?
【问题讨论】:
-
您能否更具体地说明您所说的高效?在某种程度上,如果要打印它们,则需要遍历映射中的条目。现在有办法解决了。
-
另外,请注意,结果很可能是 c、a、b 或 b、a、c 或任何其他组合。
-
为了澄清,效率意味着我可以摆脱第一个 for 循环。我知道我需要第二个来打印,这是不可避免的。
-
没有。没有比这更好的方法了。
-
for (final Location s : map.values()) { System.out.println(s.getId()); }。如果您只想打印值,则无需创建临时列表。
标签: java collections lambda guava