Повторяющиеся элементы в ArrayList (Java) - PullRequest
0 голосов
/ 02 ноября 2011

Мне нужно получить количество наиболее часто встречающихся элементов в массиве List of Objects.У меня есть этот код, и он работает.

public static int contarRepeditos(ArrayList<Objecto> a) {
    int resul = 0;
    ArrayList<Integer> valores = new ArrayList<Integer>();
    for (int i = 0; i < a.size(); i++) {
        valores.add(a.get(i).getValor());
    }
    ArrayList<Integer> resultados = new ArrayList<Integer>();
    for (int i = 0; i < valores.size(); i++) {
        resultados.add(Collections.frequency(valores, a.get(i).getValor()));
    }
    resul = Collections.max(resultados);
    return resul;
}

Мне нужно знать, есть ли лучший способ сделать это.Спасибо.

Ответы [ 2 ]

5 голосов
/ 02 ноября 2011

Типичным методом будет использование карты, где ключом будет значение «доблесть», а значением будет текущий счетчик того, сколько раз это значение появилось.

1 голос
/ 02 ноября 2011

Пример использования карты:

public static int contarRepeditos(List<Objecto> a) {
    Map<Integer, Integer> freqMap = new HashMap<Integer, Integer>();
    for (Objecto obj : a) {
        freqMap.put(obj.getValor(), (freqMap.get(obj.getValor()) == null ? 1 : (freqMap.get(obj.getValor()) + 1)));
    }
    return Collections.max(freqMap.values());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...