@javanub

Как посчитать дублирующиеся элементы в массиве?

Например, есть массив вида:
char a[] = {'ж', 'ж', 'и', 'к', 'е', 'к', 'п'};

Как посчитать сумму дубликатов, чтобы было так:
ж: 2
к: 2
  • Вопрос задан
  • 18257 просмотров
Решения вопроса 1
FanKiLL
@FanKiLL
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class Application {

	public static void main(String[] args) {
		Map<Character, Integer> letters = new HashMap<Character, Integer>();

		ArrayList<Character> fakeArray = new ArrayList<Character>();
		fakeArray.add('a');
		fakeArray.add('a');
		fakeArray.add('a');
		fakeArray.add('b');
		fakeArray.add('b');
		fakeArray.add('c');
		fakeArray.add('c');
		fakeArray.add('c');
		fakeArray.add('w');
		fakeArray.add('w');
		fakeArray.add('w');
		fakeArray.add('w');
		fakeArray.add('g');

		for (int i = 0; i < fakeArray.size(); i++) {
			Character tempChar = fakeArray.get(i);

			if (!letters.containsKey(tempChar)) {
				letters.put(tempChar, 1);
			} else {
				letters.put(tempChar, letters.get(tempChar) + 1);
			}
		}

		for (Map.Entry<Character, Integer> entry : letters.entrySet()) {
			System.out.println("Буква = " + entry.getKey() + ", Повторений = " + entry.getValue());
		}

	}
}


И вот что выводит в консоль, когда скрипт отработал.

Буква = w, Повторений = 4
Буква = g, Повторений = 1
Буква = b, Повторений = 2
Буква = c, Повторений = 3
Буква = a, Повторений = 3


Наверно можно лучше, сейчас бошка не варит сорри. Но задачу решает, копайте в эту сторону.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
tsarevfs
@tsarevfs
C++ developer
Если возможных вариантов для элементов немного (например как в вашем примере char 256 возможных символов) , то за один проход можно посчитать количество вхождений каждого варианта. Иначе используйте map для этого.
Ответ написан
Решение в лоб.

Создаете ассоциативный массив (в джаве ими map разруливает, кажется). Назовем его b. Далее проходите в цикле по всему своему a[]. Если элемент с ключом a[i] уже есть в b, то инкрементируем его значение. Если нет — добавляем такой элемент в b со значением 1.

Если нужно получить только дубликаты, то обходите b и удаляете все элементы, которые имеют значение 1.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы