我需要知道在哈希表数组中有多少特定的键。
如何在不循环遍历整个数组的情况下获得该数字?就像是
int occurrences = Collections.frequency(TheHashmapArray, ["specificKey",*]);
最佳答案
从性能的角度来看,如果不遍历所有映射,就无法实现这一点,并且复杂度为O(n)(请注意,containsKey
在HashMap
中具有O(1)复杂度)。
如果问题只是避免编写循环的笨拙语法,则Java 8提供了一种使用流API的简洁方法:
Map<String, String>[] mapsArray = // get the value
long numMaps =
Arrays.stream(mapsArray).filter(p -> p.containsKey("some_key")).count();
编辑:
根据下面的注释,它不是数组,而是
ArrayList
。相同的主体仍然成立,但是由于您具有实际的Collection
,因此您可以调用.stream
:ArrayList<HashMap<String, String>> mapsArray = // get the value
long numMaps = mapsArray.stream().filter(p -> p.containsKey("some_key")).count();