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)) {
...
}
我将多个 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)) {
...
}