我正在尝试解决方案中的以下问题。
我的方法接受用户输入的ArrayList
,在单独的类中也有一个HashMap<String(keyword), ArrayList<String>(collection of responses)>
。
我需要将用户输入与HashMap的关键字进行匹配,并存储相应的ArrayList(从HashMap键返回),以进行进一步的操作。
问题是,在一场比赛之后,我不确定如何继续,因为我正在通过for-each loop.
进行用户输入。在第一次比赛之后,我需要继续寻找第二场,第三场,依此类推。
对于每个HashMap键匹配项,我需要存储适当的ArrayList-所以我认为它应该像这样:
ArrayList<String> match1 = hashMap.get(wordFromInput);
ArrayList<String> match2 = hashMap.get(wordFromInput2);
对我来说,这似乎应该有一个简单/明确的解决方案,但我还没有找到它。有什么建议?
最佳答案
您可以通过创建HashMap的entrySet的流,然后将结果filter,map和collect放入列表中来完成手头的任务。
List<ArrayList<String>> resultSet = hashMap.entrySet()
.stream()
.filter(e -> inputArrayList.contains(e.getKey()))
.map(Entry::getValue)
.collect(Collectors.toCollection(ArrayList::new));
使用命令式方法:
List<ArrayList<String>> resultSet = new ArrayList<>();
for (Map.Entry<String, ArrayList<String>> entry : hashMap.entrySet())
{
if(inputArrayList.contains(entry.getKey())){
resultSet.add(entry.getValue());
}
}
关于java - 在Java迭代过程中存储多个匹配项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47664181/