【问题标题】:Counting number of duplicates using Arraylist in Java在 Java 中使用 Arraylist 计算重复次数
【发布时间】:2019-04-02 21:33:12
【问题描述】:

我有一个邮政编码文件,其邮政编码格式为 邮编、城市、县

90001,Los Angeles,Los Angeles
90002,Los Angeles,Los Angeles
90003,Los Angeles,Los Angeles
90004,Los Angeles,Los Angeles
90005,Los Angeles,Los Angeles

我创建了一个包含Zipcode 类对象的列表。我正在尝试计算一个县的邮政编码数量并打印出来。像这样的:

Los Angeles: 525
San Diego: 189
Orange: 149

等等

这是我目前尝试过的代码:

void printInfo() {
        int count=0;
        Collections.sort(zipcodes);    //natural order of county
        for (int i = 0; i < zipcodes.size()-1;i++)
        {
            for (int j = i+1; j < zipcodes.size(); j++)
            {
                if (zipcodes.get(i).county.equals(zipcodes.get(j).county)) {
                    count++;
                }
            }
            state.add(new County(zipcodes.get(i).county,count));
        }


        Collections.sort(state);
        for (County z: state) {
            System.out.println("County: " + z.county + " " + "Count: " + z.count );     
        }
}

我得到的输出看起来像: 洛杉矶:148 橙色:148 圣地亚哥:148 洛杉矶:149 圣地亚哥:149 ...... 洛杉矶:188 圣地亚哥:188 ...... 洛杉矶:524

需要帮助。不知道我在这个循环中做错了什么。

【问题讨论】:

  • 什么不起作用?
  • 我没有得到正确的输出。例如: 县:洛杉矶计数:524 县:洛杉矶计数:1047 县:洛杉矶计数:1569 县:洛杉矶计数:2090 县:洛杉矶计数:2610 县:洛杉矶计数:3129 县:洛杉矶计数: 3647 我得到不同的洛杉矶计数而不是洛杉矶计数。
  • 一方面,您不会在i 循环内重置count
  • “我没有得到正确的输出”不是对问题的可操作描述。什么正确的输出,你得到的是什么?
  • 这不是你的问题,但如果它们按县排序,你还应该有一个 else 和一个 break,因为只要一个不匹配其余的会。

标签: java arraylist duplicates counting


【解决方案1】:

只要把 count=0;在第二个循环之前如下:

  count = 0;
  for (int j = i+1; j < zipcodes.size(); j++)
     ......

【讨论】:

    【解决方案2】:

    @MSG 更简单的解决方案(假设 zipCodes 是 List )

        Map<String, Long> processed = zipCodes.stream()
                .collect(Collectors.groupingBy(ZipCode::getCounty, Collectors.counting()
            )                        
        );
    
        processed.entrySet().stream().forEach(zipCode -> System.out.println(zipCode));
    

    【讨论】:

      猜你喜欢
      • 2014-09-18
      • 2014-04-08
      • 1970-01-01
      • 2021-07-06
      • 1970-01-01
      • 2017-06-06
      • 1970-01-01
      • 2014-01-17
      • 1970-01-01
      相关资源
      最近更新 更多