提问者:小点点

从使用列表作为值HashMap中删除对象


private static final Map<TeamType, List<Player>> LIST = new ConcurrentHashMap<>();

如何从列表中删除播放器对象? 我现在的代码是:

for (List<Player> team : LIST.values())
{
    if (team.contains(ObjectIWantToRemove))
    {
        team.remove(ObjectIWantToRemove);
        return;
    }
}

但是我想用单行来改进。


共3个答案

匿名用户

你是想:

LIST.values().forEach(team -> team.remove(ObjectIWantToRemove))

匿名用户

你可以做的一件事是:

for (List<Player> team : LIST.values()) {
     if (team.remove(ObjectIWantToRemove))
     {
         return;
     }
}

这将避免在删除元素之前调用contains

匿名用户

您可以迭代键集并从值中移除并更新映射。

for (TeamType key : LIST.keySet()) {
    List<Player> p = map.get(key);
    p.remove(PlayerObjectToRemove);
    LIST.put(key, p);
}