как вывести сколько дубликатов и их количество
Подскажите, пожалуйста в чем проблема у меня есть список "Europe", "Europe", "Africa", "Africa", "Africa", "America" и должно вывести "Europe"2, "Africa"3 " и все (Америка не выводится так как не имеет дубликата)
Вот что у меня выводится
trueAssertion faildEurope2
falseAssertion faildAfrica2
falseAssertion faildAfrica2
falseAssertion faildAfrica2
falseAssertion faildAmerica2
falseAssertion faildAfrica2
falseAssertion faildAfrica2
falseAssertion faildAfrica2
falseAssertion faildAmerica2
trueAssertion faildAfrica3
trueAssertion faildAfrica4
falseAssertion faildAmerica4
trueAssertion faildAfrica5
falseAssertion faildAmerica5
falseAssertion faildAmerica5
Process finished with exit code 0
Вот код:
public class Main {
public static void main(String[] args) {
List<String> aList = Arrays.asList("Europe", "Europe", "Africa", "Africa", "Africa", "America");
int countDuplicates = 1;
for (int i = 0; i < aList.size(); i++)
for (int j = i+1; j < aList.size(); j++) {
if (aList.get(i).equals(aList.get(j))) {
countDuplicates++;
}
System.out.println(aList.get(i).equals(aList.get(j)) + "Assertion faild" + aList.get(j)+countDuplicates);
}
}
}
Ответы (2 шт):
Автор решения: Дмитрий
→ Ссылка
Сложновата реализация, отсюда всегда все беды. Принцип кiss никто не отменял:
Map<String, Long> result = Arrays.asList("Europe", "Europe", "Africa", "Africa", "Africa", "America").stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
result.entrySet().removeIf(e->e.getValue()==1);
Автор решения: Bogdan Voinov
→ Ссылка
public class Main {
public static void main(String[] args) {
List<String> aList = Arrays.asList("Europe", "Europe", "Africa", "Africa", "Africa", "America");
int countDuplicates = 1;
for (int i = 0; i < aList.size(); i++)
for (int j = i+1; j < aList.size(); j++) {
if (aList.get(i).equals(aList.get(j))) {
countDuplicates++;
aList.remove(j);
}
}
if(countDuplicates > 1){
System.out.println(aList.get(i)+" "+countDuplicates);
aList.remove(i);
countDuplicates = 1;
}
}
}
Вроде бы так.