java - 从嵌套在 Map 中的 List 中删除值

标签 java arraylist hashmap keyset

我有一个 HashMap,其中包含一个 ArrayList 作为值。我想检查其中一个列表是否包含一个对象并从列表中删除该对象。我怎样才能实现这一目标?

我尝试使用一些 for 循环,但随后出现 ConcurrentModificationException。我无法消除该异常。

我的 HashMap :

Map<String,List<UUID>> inAreaMap = new HashMap<String, ArrayList<UUID>>();

我打算检查 ArrayList 是否包含我获得的 UUID,如果是,我想将其从该 ArrayList 中删除。但我不知道代码中该位置的字符串。

我已经尝试过的:

for (List<UUID> uuidlist : inAreaMap.values()) {
    for (UUID uuid : uuidlist) {
        if (uuid.equals(e.getPlayer().getUniqueId())) {
            for (String row : inAreaMap.keySet()) {
                if (inAreaMap.get(row).equals(uuidlist)) {
                    inAreaMap.get(row).remove(uuid);
                }
            }
        }
    }
}

最佳答案

有一种更优雅的方法可以做到这一点,即使用 Java 8:

Map<String, ArrayList<UUID>> map = ...
UUID testId = ...
// defined elsewhere

// iterate through the set of elements in the map, produce a string and list for each
map.forEach((string, list) -> { 

    // as the name suggests, removes if the UUID equals the test UUID
    list.removeIf(uuid -> uuid.equals(testId));
});

关于java - 从嵌套在 Map 中的 List 中删除值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57431057/

相关文章:

java - 无法创建名称为 Entry 的类

java - 用于 java 的照片身份证生成 API

java - 图像文件结构和编码文件名。像 Facebook 图片网址

java - 改变牙套的样式

java - 在错误地猜测 ArrayList 容量与未使用的值之间进行权衡?

java - ArrayList 与数组。为什么一个工作,一个不工作?

java - 如何解决 Spring Boot 应用程序中的 FlyWay 许可问题

java - 使用 hibernate 3 和 ojdbc 7 合并时出错

java - 如何将Excel中的值分组到HashMap

珀尔 5.26 : How to get keys from 2d hash?