【问题标题】:get size of collection in nested hashmap? [closed]获取嵌套哈希图中的集合大小? [关闭]
【发布时间】:2017-02-16 07:03:36
【问题描述】:

我有 Map<String, Map <String, List<ExciseReportDataPoint>>> Data 类型的数据结构,我想为每个顶级键计算 List<ExciseReportDataPoint> 中的条目数。

我们可以以逻辑方式将哈希图视为Map<LiquorCategory, Map<LiquorBrand, List<LiquorBottles>>>。基本上我想知道每个 LiquorCategory 有多少酒瓶。

【问题讨论】:

  • 您应该自己尝试代码并询问您是否遇到问题。如果您自己不尝试,我们不会为您编写代码。
  • 我同意如何记下这个问题?
  • map.get(LiquorCategory).size() ?
  • @DarshanPuranik 投票关闭,如果可以的话(不确定 VTC 的代表要求是什么)。
  • 问题标签下方还有一个delete按钮。

标签: java collections hashmap


【解决方案1】:

您必须遍历第一级Map,然后遍历第二级以计算所有List.size

第一种方式

Map<String, Map <String, List<Double>>> Data = new HashMap<String, Map <String, List<Double>>> ();
int somme = 0;
for(String key1 : Data.keySet()){
    somme = 0;
    for(List<Double> value2 : Data.get(key1).values()){
        somme += value2.size();
    }
    System.out.println("For "+key1+", there is "+somme+" bottles");
}

要使用它,您只需更改元素的类型(字符串,双精度酒...)

第二种方式

Data.keySet().stream().forEach(key1 -> {
            System.out.println("For " + key1 + ", there is "
                    + Data.get(key1).values().stream().mapToInt(list -> list.size()).sum() + " bottles");
        });

在这里你不必关心类型,它们没有被使用,它在 3 行中做同样的事情 流是迭代和过滤、求和、计数的替代方案......

【讨论】:

    【解决方案2】:

    Map>> data = new HashMap>> ();

    for (Map.Entry>>liquecategoryEntry : data.entrySet()) {

    String category = liquorCategoryEntry.getKey();
    
    int liquorBottle = 0;
    for (Map.Entry<String, List<Double>> liquorBrandEntry : liquorCategoryEntry.getValue().entrySet()) {
        String brandName = liquorBrandEntry.getKey();
        liquorBottle += liquorBrandEntry.getValue().size();
        // ...
    }
    

    }

    【讨论】:

      【解决方案3】:

      我根据一些答案的建议编写了以下代码。这对我有用。代码如下:

      for (Map.Entry<String, Map<String, List<ExciseReportDataPoint>>> entry1 : rData.entrySet()) {
           int liquorBottle = 0;
           for(List<ExciseReportDataPoint> value2 : rData.get(entry1.getKey()).values()){
               liquorBottle += value2.size();
           }
      }
      

      【讨论】:

        猜你喜欢
        • 2017-04-16
        • 2021-10-21
        • 2019-12-20
        • 2018-02-24
        • 2021-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-21
        相关资源
        最近更新 更多