我正在尝试解决方案中的以下问题。

我的方法接受用户输入的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的流,然后将结果filtermapcollect放入列表中来完成手头的任务。

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/

10-14 10:54