【发布时间】:2018-12-11 23:56:04
【问题描述】:
我有以下两个字符串列表:
{APPLE, ORANGE, BANANA} //call it keyList
{APPLE123, ORANGEXXX, 1APPLE, APPLEEEE} //call it valueList
所需的输出是HashMap<String, List<String>>,如下所示:
<APPLE, {APPLE123, 1APPLE, APPLEEEE}>
<ORANGE, {ORANGEXXX}>
<BANANA, {}> //also <key, null> is accepted
我已经实现了这个解决方案(它有效)
HashMap<String, List<String>> myMap = new HashMap<>();
keyList.forEach(key -> {
List<String> values = valueList.stream()
.filter(value -> value.contains(key))
.collect(Collectors.toList());
myMap.put(key, values);
});
假设一个值仅与一个键相关(它是我的域的约束),就性能和/或代码清理而言,这是 java8 中的最佳解决方案吗? 可以通过某种方式进行调整吗?
【问题讨论】:
标签: collections java-8 hashmap