gpt4 book ai didi

java - 有没有更好的方法从 Map 中检索值

转载 作者:行者123 更新时间:2023-12-03 22:06:26 24 4
gpt4 key购买 nike

我有以下代码

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);
}

中,是否有更好的方法来获取 Id 而不使用 for 循环? Java6 .

根据 Java8,引用代码形式 @rohit-jain 回答
final List<String> list = map.values().stream().map(loc -> loc.getId()).collect(Collectors.toList());

java6中有什么这个consise吗?

最佳答案

不确定效率(因为它不会影响太大),但是如果您想使用 lambda 来做到这一点,它可以是这样的:

final Map<String, Location> locationMap = new HashMap<>();
locationMap.put("1", new Location("a", null));
locationMap.put("2", new Location("b", null));
locationMap.put("3", new Location("c", null));

final List<String> list = locationMap.values().stream()
.map(loc -> loc.getId())
.collect(Collectors.toList());

System.out.println(list); // can be `[a, b, c]` or `[b, c, a]`, etc

但是,只是因为你没有看到 for这里的循环并不意味着它不会迭代 map 的值。它确实存在,但只是隐藏了迭代逻辑。

或者,如果您只想打印值(一次使用),您甚至可以避免在那里创建列表:
locationMap.values().stream().map(loc -> loc.getId())
.forEach(System.out::println);

关于java - 有没有更好的方法从 Map 中检索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29041274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com