ArrayList(java)中的重复元素

时间:2011-11-02 15:48:56

标签: java arraylist

我需要获取对象的arrayList中最常出现的元素的计数。我有这个代码,它正在工作。

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 个答案:

答案 0 :(得分:5)

典型的方法是使用一个映射,其中键是“valor”值,值将是该值出现次数的运行计数。

答案 1 :(得分:1)

使用map的示例:

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());
}