在 Java 中使用 Arraylist 计算重复项数
Counting number of duplicates using Arraylist in Java
我有一个邮政编码文件,其中的邮政编码格式为
邮政编码,城市,县
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
class 的对象。我正在尝试计算一个县的邮政编码数量并打印出来。像这样:
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
需要帮助。不确定我在这个循环中做错了什么。
只要把count=0;在第二个循环之前如下:
count = 0;
for (int j = i+1; j < zipcodes.size(); j++)
......
@味精
更简单的解决方案(假设 zipCodes 是一个 List < ZipCode > )
Map<String, Long> processed = zipCodes.stream()
.collect(Collectors.groupingBy(ZipCode::getCounty, Collectors.counting()
)
);
processed.entrySet().stream().forEach(zipCode -> System.out.println(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
class 的对象。我正在尝试计算一个县的邮政编码数量并打印出来。像这样:
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
需要帮助。不确定我在这个循环中做错了什么。
只要把count=0;在第二个循环之前如下:
count = 0;
for (int j = i+1; j < zipcodes.size(); j++)
......
@味精 更简单的解决方案(假设 zipCodes 是一个 List < ZipCode > )
Map<String, Long> processed = zipCodes.stream()
.collect(Collectors.groupingBy(ZipCode::getCounty, Collectors.counting()
)
);
processed.entrySet().stream().forEach(zipCode -> System.out.println(zipCode));