public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("AA");
list.add("aa");
list.add("aa");
final List<String> collect = list.stream().collect(Collectors.groupingBy(m -> m, Collectors.counting()))
.entrySet().stream().filter(item -> item.getValue() > 1).map(Map.Entry::getKey).collect(Collectors.toList());
System.out.println(collect);
}
public static int cntRepeat(List<String> list) {
Map<String, Integer> map = new HashMap<>();
int cnt = 0;
for (String s : list) {
if (map.containsKey(s) && map.get(s) == 1) {
cnt++;
}
map.put(s, map.getOrDefault(s, 0) + 1);
}
return cnt;
}
public static int cntRepeat2(List<String> list) {
Set<String> set = new HashSet<>();
Set<String> cntSet = new HashSet<>();
int cnt = 0;
for (String s : list) {
if (set.contains(s) && !cntSet.contains(s)) {
cntSet.add(s);
cnt++;
}
set.add(s);
}
return cnt;
}
public static int cntRepeat(List<String> list) {
Collections.sort(list);
int cnt = 0;
for (int i = 0, j = 0; j < list.size(); ) {
while (j < list.size() && list.get(i) == list.get(j)) {
j++;
}
if (i + 1 != j) {
cnt++;
}
i = j;
}
return cnt;
}