迭代期间在java

时间:2017-12-05 23:08:16

标签: java arraylist collections

我正试图在方案中找出以下问题。

我的方法需要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);

对我而言,这似乎应该有一个简单/明显的解决方案,但我还没有找到它。有什么建议吗?

1 个答案:

答案 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());
      }
}