如何计算 arraylist 中特定 class 的实例数?
How to count number of instances of specific class in arraylist?
我有一个数组列表,如下所示:
[new Class1(), new Class2(), new Class1(), new Class1()]
我想知道在数组列表中提取 Class1 实例数的最有效方法。
对于上面的例子,我要答案3。
我正在使用 Java 版本“1.7.0_79”。
您可以遍历 ArrayList 并使用 instanceof
运算符进行检查。
for (Object e : lst)
{
if (e instanceof Car)
{
carCount++;
}
}
您可能需要使用关键字 instanceof
检查数组中任何给定位置的 class
示例:
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");
}
如果数组列表如下所示,
newClass1 = new Class1();
[newClass1, new Class2(), newClass1, newClass1]
然后你可以像下面这样检查频率,
Collections.frequency(arrayList, newClass1);
如果您总是添加 Class1 的新实例,那么下面就是解决方案
[new Class1(), new Class2(), new Class1(), new Class1()]
重写 Class1 中的 equals 方法,如下所示,
@Override
public boolean equals(Object o){
if(!(o instanceof Class1 )){
return false;
}else{
return true;
}
}
然后在你的测试中 class,
System.out.println(Collections.frequency(array, new Class1()));
好吧,您可以通过
轻松过滤它们
result = Iterables.filter(collection, YourClass.java);
然后您可以对结果应用 .size()
。
我有一个数组列表,如下所示:
[new Class1(), new Class2(), new Class1(), new Class1()]
我想知道在数组列表中提取 Class1 实例数的最有效方法。
对于上面的例子,我要答案3。
我正在使用 Java 版本“1.7.0_79”。
您可以遍历 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");
}
如果数组列表如下所示,
newClass1 = new Class1();
[newClass1, new Class2(), newClass1, newClass1]
然后你可以像下面这样检查频率,
Collections.frequency(arrayList, newClass1);
如果您总是添加 Class1 的新实例,那么下面就是解决方案
[new Class1(), new Class2(), new Class1(), new Class1()]
重写 Class1 中的 equals 方法,如下所示,
@Override
public boolean equals(Object o){
if(!(o instanceof Class1 )){
return false;
}else{
return true;
}
}
然后在你的测试中 class,
System.out.println(Collections.frequency(array, new Class1()));
好吧,您可以通过
轻松过滤它们result = Iterables.filter(collection, YourClass.java);
然后您可以对结果应用 .size()
。