Как подсчитать количество экземпляров определенного класса в arraylist?
У меня есть список массивов, который выглядит так:
[new Class1(), new Class2(), new Class1(), new Class1()]
Я хочу знать, наиболее эффективный способ извлечения количества экземпляров класса Class1 в списке выбора.
для приведенного выше примера я хочу получить ответ 3.
Я использую версию Java "1.7.0_79".
4 ответов
если arraylist, как показано ниже,
newClass1 = new Class1();
[newClass1, new Class2(), newClass1, newClass1]
затем вы можете проверить частоту, как показано ниже,
Collections.frequency(arrayList, newClass1);
если вы всегда добавляете новый экземпляр Class1, то ниже будет решение
[new Class1(), new Class2(), new Class1(), new Class1()]
переопределить метод equals в Class1, как показано ниже,
@Override
public boolean equals(Object o){
if(!(o instanceof Class1 )){
return false;
}else{
return true;
}
}
тогда в вашем тестовом классе,
System.out.println(Collections.frequency(array, new Class1()));
вы можете перебрать ArrayList и проверить, используя instanceof
оператора.
for (Object e : lst)
{
if (e instanceof Car)
{
carCount++;
}
}
вам может потребоваться проверить класс в любой заданной позиции в массиве, используя ключевое слово instanceof
пример:
public static void main(String[] args) {
Number[] myN = new Number[5];
//populate... ignore this if want
for (int i = 0; i < myN.length; i++) {
if (i%2==0) {
myN[i]= new Integer(i);
}else{
myN[i]= new Double(i);
}
}
int classACounter=0;
int classBCounter=0;
//check
for (int i = 0; i < myN.length; i++) {
if (myN[i] instanceof Integer){
System.out.println(" is an int");
classACounter++;
}
if (myN[i] instanceof Double){
System.out.println(" is a double");
classBCounter++;
}
}
System.out.println("There are "+classACounter+" elements of the class A");
System.out.println("There are "+classBCounter+" elements of the class B");
}
Ну, вы можете легко фильтровать их с помощью
result = Iterables.filter(collection, YourClass.java);
затем вы можете применить .size()
на результат.