【问题标题】:How to count the number of occurrences of Hashmaps with an specific key in a array of Hashmaps?如何计算Hashmaps数组中具有特定键的Hashmaps的出现次数?
【发布时间】:2015-07-30 14:24:33
【问题描述】:

我需要知道有多少哈希图在哈希图数组中具有特定键。

如何在不循环遍历整个数组的情况下获得该数字?像

int occurrences = Collections.frequency(TheHashmapArray, ["specificKey",*]);

【问题讨论】:

  • 为什么不想循环播放?你有多少个哈希图? containsKey 对于典型的 HashMap 来说,复杂度几乎可以忽略不计。

标签: java android arrays hashmap


【解决方案1】:

从性能的角度来看,如果不遍历所有映射,就无法实现这一点,复杂度为 O(n)(请注意,containsKeyHashMap 中的复杂度为 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();

【讨论】:

  • 谢谢,但我的数组被定义为 ArrayList>,sintax 必须是怎样的?
  • @Dov 哦,我以为这是一个实际的数组。 ArrayList 是不同的 - 它是一个内置集合,实现了由内部数组支持的 List 接口。无论如何,请参阅我的编辑-尽管语法略有不同,但原理相似。
猜你喜欢
  • 1970-01-01
  • 2021-03-02
  • 1970-01-01
  • 1970-01-01
  • 2013-09-10
  • 2010-10-20
  • 2015-08-22
  • 2011-07-27
  • 1970-01-01
相关资源
最近更新 更多