Как посчитать дублирующиеся элементы в массиве?
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
Наверно можно лучше, сейчас бошка не варит сорри. Но задачу решает, копайте в эту сторону.
Если возможных вариантов для элементов немного (например как в вашем примере char 256 возможных символов) , то за один проход можно посчитать количество вхождений каждого варианта. Иначе используйте map для этого.