Ваше сравнение типа данных String
не будет работать, если это не тот же экземпляр. Чтобы просто проверить, имеют ли строки одинаковые символы, вы должны использовать .equals()
. Имейте в виду, что сравнение Integer
(не int
) также работает следующим образом. Причиной этого является то, что String
является классом, а не примитивным типом. Также прочитайте этот пост .
Так что с
if (array[i].equals(array[j])) {
count++;
}
у вас все будет хорошо.
Дополнительно (больше читаемое) решение
Чтобы дать вам расширенный подход к подсчету одинаковых значений, я создал для вас небольшую выборку. Вам нужна функция groupingBy
. При подсчете вхождений вы объединяете все значения списка в один атрибут.
Пример
Map<String, Long> nameAndCount = Arrays.asList(array).stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
for(Entry<String, Long> entry : nameAndCount.entrySet()) {
System.out.println(entry.getKey() + " exists " + entry.getValue()+ " times.");
}