Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中使用Arraylist计算重复数_Java_Arraylist_Duplicates_Counting - Fatal编程技术网

在Java中使用Arraylist计算重复数

在Java中使用Arraylist计算重复数,java,arraylist,duplicates,counting,Java,Arraylist,Duplicates,Counting,我有一个邮政编码文件,它的邮政编码格式如下 Zipcode,市,县 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类的对象。我要做的是计算一个县的zipcodes数并打印出来。大概是这样的: Los An

我有一个邮政编码文件,它的邮政编码格式如下 Zipcode,市,县

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
类的对象。我要做的是计算一个县的zipcodes数并打印出来。大概是这样的:

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 );     
        }
}
void printInfo(){
整数计数=0;
Collections.sort(zipcodes);//县的自然顺序
对于(int i=0;i
我得到的输出如下所示: 洛杉矶:148 橙色:148 圣地亚哥:148 洛杉矶:149 圣地亚哥:149 ..... 洛杉矶:188 圣地亚哥:188 ..... 洛杉矶:524


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

只需将count=0;在第二个循环之前,如下所示:

  count = 0;
  for (int j = i+1; j < zipcodes.size(); j++)
     ......
count=0;
对于(int j=i+1;j
@MSG 更简单的解决方案(假设zipCodes是一个列表

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

什么不起作用?我没有得到正确的输出。例如:县:洛杉矶计数:524县:洛杉矶计数:1047县:洛杉矶计数:1569县:洛杉矶计数:2090县:洛杉矶计数:2610县:洛杉矶计数:3129县:洛杉矶计数:3647我得到的是不同的洛杉矶计数,而不是一个洛杉矶计数,您没有在
i
循环内重置
count
。“我没有得到正确的输出”不是问题的可操作描述。正确的输出是什么,您得到的是什么?这不是您的问题,但是如果按县排序,您还应该有一个带
中断的
else
,因为只要一个不匹配,其余的都不会匹配。
    Map<String, Long> processed = zipCodes.stream()
            .collect(Collectors.groupingBy(ZipCode::getCounty, Collectors.counting()
        )                        
    );

    processed.entrySet().stream().forEach(zipCode -> System.out.println(zipCode));