Вот фрагмент кода, где я хочу найти несколько вхождений имени животного.Как подсчитать одинаковые значения в arrayList
Я написал код, сравнивающий индексы списка, но неспособный понять, как сравнивать имена и подсчитывать количество вхождений каждого имени.
List<Animals> animalList= new ArrayList<Animals>();
try {
CallableStatement stmt = conn.prepareCall(callProcedure, ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
boolean results = stmt.execute();
if (results) {
ResultSet rs = stmt.getResultSet();
int count = 0;
while (rs.next()) {
Animals animal = new Animals();
animal.setAnimalName(rs.getString("animal_name"));
animal.setAge(rs.getString("age"));
animal.setHealth(rs.getString("health"));
animalList.add(animal);
count++;
}
}
int nbOccurences = 1;
for (int i = 0, length = animalList.size(); i < length; i++) {
if (i < length - 1) {
if (animalList.get(i) == animalList.get(i+1)) {
nbOccurences++;
}
} else {
System.out.println(animalList.get(i) + " occurs " + nbOccurences
+ " time(s)"); //end of array
}
if (i < length - 1 && animalList.get(i) != animalList.get(i+1)) {
System.out.println(animalList.get(i) + " occurs " + nbOccurences
+ " time(s)"); //moving to new element in array
nbOccurences = i;
}
}
} catch (SQLException sqlE) {
sqlE.printStackTrace();
}
return animalList;
Во-первых, вы должны помнить разницу между == и «равных()» в Java, а затем вы не должны сравнивать на animalList.get (x), но на чем-то вроде animalsList.get (x) .getAnimalName(), потому что вы хотите найти несколько вхождений имени животного. –