我需要获取对象的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;
}
我需要知道是否有最好的方法来做到这一点。感谢。
答案 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());
}