Java 将映射转换为ArrayList,其中条目值=某物

Java 将映射转换为ArrayList,其中条目值=某物,java,arraylist,hashmap,Java,Arraylist,Hashmap,我使用的是Map,我需要选择具有特定整数的用户并将其添加到ArrayList中,让所有用户进入ArrayList的最简单方法是什么 这是我尝试过的,它可以工作,但我希望代码更短 ArrayList<User> users = new ArrayList(); for (Map.Entry<User, Integer> entry : userAnswers.entrySet()) { if(entry.getValue()==1) users.add(entry

我使用的是
Map
,我需要选择具有特定整数的用户并将其添加到ArrayList中,让所有用户进入
ArrayList
的最简单方法是什么

这是我尝试过的,它可以工作,但我希望代码更短

ArrayList<User> users = new ArrayList();

for (Map.Entry<User, Integer> entry : userAnswers.entrySet())
{
    if(entry.getValue()==1) users.add(entry.getKey());
}
ArrayList users=new ArrayList();
for(Map.Entry:userAnswers.entrySet())
{
如果(entry.getValue()==1)users.add(entry.getKey());
}

编辑:谢谢Danil Gaponov,你的答案正是我想要的

创建通用静态方法:

public static <K, V> List<K> collectKeys(Map<K, V> map, V v) {
    List<K> list = new ArrayList<>();
    for (Map.Entry<K, V> e : map.entrySet()) 
        if (Objects.equals(e.getValue(), v))  // null-safe comparison
            list.add(e.getKey());
    return list;
}
需要Java 8:

map.entrySet().stream()
    .filter(e -> e.getValue().equals(1))
    .map(e -> e.getKey())
    .collect(Collectors.toList());

我认为没有比这更简单的方法了。使用for循环和if与Java一样简单

为什么你认为应该有一个更简单的方法?也许你没有像我想的那样说:

如果for和Integer==1,则添加到ArrayList


如果您发布您所做的事情,我们可以看看是否有更简单的方法。

如果您希望代码更简单,您还可以使用utilities for Java 8和这一简单行

MapStream.of(map).inverseMapping().collect();

有很多方法可以做到这一点。选择最好的一个需要更多地解释你的背景和限制。等等,这么多人正在键入他们的答案。顺便说一句,你有没有尝试过什么?什么是
最好的方法
?你的代码有什么不起作用?@Jens最简单的代码就是想提出同样的建议,但也许你可以添加一些解释,特别是所需的Java版本…谢谢,我会对你的帖子投至少10倍的赞成票,因为它提供了一个简单的行来做这件事,而不是问我尝试过什么以及什么是最好的方法……这种方法总是比“在地图上迭代”方法花费更多的时间。如果映射非常大,则使用这两种方法运行一些测试。对于小贴图,差异不应超过几毫秒。
MapStream.of(map).inverseMapping().collect();