【发布时间】:2016-12-19 12:19:15
【问题描述】:
我有一个包含 N 个 hast 表的哈希表:
Map<Integer,Map<String,Double>
我需要创建一个包含内部映射的所有键的列表:
----------------
| | a 2 |
| 100 | b 1 |
| | c 2 |
----------------
| | a 2 |
| 101 | d 2 |
----------------
| | a 2 |
| 102 | b 1 |
| | e 2 |
----------------
列表 = {a,b,c,d,e}
这是我当前的代码:
Set<String> keys= new HashSet<>();
map1.entrySet().forEach(e -> {
keys.addAll(e.getValue().keySet());
});
map1 包含数千个条目。
这是最佳方法吗?有人知道更快的方法吗?
【问题讨论】:
-
你为什么不使用
map.entrySet().stream().map(Map.Entry::getKey).collect(Collectors.toList());?这样你就不需要嵌套的addAll()调用,也不需要在之前初始化一个空列表。那当然只是化妆品。但是:我不知道在流上使用.parallel()是否会提高性能。 -
@JDC 我正在测试你的解决方案,但是
Collectors无法解决 -
你必须将它添加到你的类的导入语句中:
import java.util.stream.Collectors; -
@JDC 已经导入了,因为我已经用过了
-
@PatrickParker:还没有答案,而是他为什么不使用它的问题。但我会添加它作为答案。