Подсчет количества дубликатов с использованием Arraylist в Java - PullRequest
0 голосов
/ 30 октября 2018

У меня есть файл почтового индекса, который имеет почтовый индекс в формате 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. Я пытаюсь подсчитать количество почтовых индексов в округе и распечатать его. Как то так:

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

Нужна помощь. Не уверен, что я делаю не так в этом цикле.

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

@ 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));
0 голосов
/ 30 октября 2018

просто поставь count = 0; перед вторым циклом, как показано ниже:

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