Javaでリストの重複をカウントする方法です。ストリームAPIを使用すると簡単に書けます。
重複をカウントする
List<String> list = List.of("A", "B", "C", "B", "B", "D", "A"); Map<String, Long> countMap = list.stream().collect( Collectors.groupingBy( Function.identity(), Collectors.counting())); countMap.forEach((k, v) -> System.out.println(k + ":" + v)); // A:2 // B:3 // C:1 // D:1
重複が多い順に並び変える
さらに、重複数が多い順に並び変えます
List<String> list = List.of("A", "B", "C", "B", "B", "D", "A"); Map<String, Long> countMap = list.stream().collect( Collectors.groupingBy( Function.identity(), Collectors.counting())); List<Map.Entry<String, Long>> sortedCountList = countMap.entrySet().stream() .sorted(Map.Entry.<String, Long> comparingByValue().reversed()) .collect(Collectors.toList()); sortedCountList.forEach(e -> System.out.println(e.getValue() + ":" + e.getKey())); // 3:B // 2:A // 1:C // 1:D