Java - 检查嵌套在 HashMap 中的 ArrayList 中的值是否存在

Java - Check if value in ArrayList nested in HashMap exists

我将多个 ArrayList 嵌套在一个 HashMap 中。

如何检查嵌套在 hashmap 中的数组列表是否存在?

public static HashMap<Integer, ArrayList<Integer>> transactionMap = new HashMap<Integer, ArrayList<Integer>>();

public static void initializeLists() {
    transactionMap.put(7, new ArrayList<Integer> (Arrays.asList(1050, 1125)));
    transactionMap.put(305, new ArrayList<Integer>(Arrays.asList(1125)));
    transactionMap.put(1125, new ArrayList<Integer>(Arrays.asList(250, 252, 251)));
    transactionMap.put(1050, new ArrayList<Integer>(Arrays.asList(251, 252)));
    transactionMap.put(1124, new ArrayList<Integer>(Arrays.asList(250)));
    transactionMap.put(1049, new ArrayList<Integer>(Arrays.asList(251, 252)));
}

此posthere描述了如何使用#contains(Object)直接检查Array List,这不适用于HashMap

这个 one 很接近,但这意味着我必须为我的所有列表命名(而且可能有很多)。除非需要,否则我想尽可能避免将地图嵌套在地图中。 有人知道最佳解决方案吗?

如果您的问题是"how do I check if a specific list is a value in the map"那么您可以按如下方式进行:

if (transactionMap.containsValue(Arrays.asList(1, 2, 3)) {
    ...
}

如果您的问题是 "how do I check if a specific integer appears somewhere in a list as a value in the map" 那么您可以执行以下操作(使用 Java 8):

if (transactionMap.values().stream().anyMatch(l -> l.contains(17)) {
    ...
}