我正试图在方案中找出以下问题。
我的方法需要ArrayList
用户输入,我在单独的类中也有HashMap<String(keyword), ArrayList<String>(collection of responses)>
。
我需要的是将用户输入与HashMap的关键字进行匹配,并存储相应的ArrayLists(从HashMap键返回)以进行进一步操作。
问题是,在一场比赛后我不知道如何继续,因为我正在通过for-each loop.
进行用户输入。在第一场比赛之后,我需要继续寻找第二,第三等等
对于每个HashMap键匹配,我需要存储相应的ArrayList - 所以我认为它应该是这样的:
ArrayList<String> match1 = hashMap.get(wordFromInput);
ArrayList<String> match2 = hashMap.get(wordFromInput2);
对我而言,这似乎应该有一个简单/明显的解决方案,但我还没有找到它。有什么建议吗?
答案 0 :(得分:2)
您可以通过创建HashMap的entrySet流然后 filter , map 和<来完成手头的任务strong> 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());
}
}