Да, тривиальный вопрос, но я не нашел дубликат. На данный момент из этой коллекции (ArrayList):
Java
C#
Java
Python
Я должен получить это: (то есть над каждым словом будет находиться количество найденных дубликатов)
Java 2
C# 1
Java 2
Python 1
В данный момент я использую карту, но она удаляет дубликаты, и вот что я получаю.
Java 2
C# 1
Python 1
Вот мой код:
Map<String, Integer> map = new HashMap<>();
for (String temp : array) {
Integer count = map.get(temp);
if (count != null){
map.put(temp, count + 1);
}
else {
map.put(temp, 1);
}
}
У меня была идея записать данные в другой список, чтобы просмотреть этот список, сравнивая каждый элемент «родительского» списка со всеми элементами нового списка. Примерно так:
List<String> resultList = new ArrayList<>();
List<String> mainList = new ArrayList<>();
for (int i = 0; i < arrayList.size(); i++) {
mainList.add(i,arrayList.get(i));
}
for (int i = 0; i < mainList.size(); i++) {
int x = 1;
for (String anArray : arrayList) {
if (mainList.get(i).equals(anArray)) {
resultList.add(i,mainList.get(i) + " "+ x++);
}
}
}
resultList.forEach(System.out::println);
, который работает так, как мне нужно, но также создает дополнительную строку при обнаружении дубликата.
Java 2
C# 1
Java 2
Python 1
Java 1
Java 1
В реализации со списком у меня есть проблема в том, что он увеличивает текущий элемент на 1, но одновременно создает и другой элемент.
Ребята, я буду рад любой идее или подсказке, которая поможет мне решить мою проблему!
UPD: Все ответы на этот вопрос божественны. Спасибо вам, ребята! Мне неловко пытаться выбрать правильный ответ, не оскорбляя других.