我有一个数组列表,看起来像:
[new Class1(), new Class2(), new Class1(), new Class1()]
Run Code Online (Sandbox Code Playgroud)
我想知道在数组列表中提取Class1实例数的最有效方法.
对于上面的例子,我想要答案3.
我使用的是Java版"1.7.0_79".
您可以遍历ArrayList并使用instanceof运算符进行检查.
for (Object e : lst)
{
if (e instanceof Car)
{
carCount++;
}
}
Run Code Online (Sandbox Code Playgroud)
如果数组列表如下所示,
newClass1 = new Class1();
[newClass1, new Class2(), newClass1, newClass1]
Run Code Online (Sandbox Code Playgroud)
然后你可以检查频率,如下所示,
Collections.frequency(arrayList, newClass1);
Run Code Online (Sandbox Code Playgroud)
如果您总是添加 Class1 的新实例,那么下面将是解决方案
[new Class1(), new Class2(), new Class1(), new Class1()]
Run Code Online (Sandbox Code Playgroud)
重写 Class1 中的 equals 方法,如下所示,
@Override
public boolean equals(Object o){
if(!(o instanceof Class1 )){
return false;
}else{
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在你的测试课中,
System.out.println(Collections.frequency(array, new Class1()));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1053 次 |
| 最近记录: |