我试图找出ArrayList
中出现一个字符串的时间。我设法使用Collections.frequency(list,object);
public class Main {
public static void main(String[] args) {
ArrayList<Main> d = new ArrayList<Main>();
Main m = new Main();
m.setA("a");
d.add(m);
Main m11 = new Main();
m11.setA("a");
d.add(m11);
Main m111 = new Main();
m111.setA("a");
d.add(m111);
int c = Collections.frequency(d, m11);
System.out.println(c);
}
private String a,b,c;
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}
public String getC() {
return c;
}
public void setC(String c) {
this.c = c;
}
@Override
public boolean equals(Object o) {
return a.equals(((Main)o).a);
}
}
在上面的代码中,我设法找到a
的出现次数。但是我怎样才能找到其他东西,比如我是否想要找到b
和c
的出现?有没有办法可以做到?我可以有很多平等功能吗?
答案 0 :(得分:1)
frequency
的实施。
public static int frequency(Collection<?> c, Object o) {
int result = 0;
if (o == null) {
for (Object e : c)
if (e == null)
result++;
} else {
for (Object e : c)
if (o.equals(e))
result++;
}
return result;
}
因此,这适用于equals方法,您不能拥有多个equals
。
您必须手动迭代列表并找到不同属性的频率。
答案 1 :(得分:0)
ArrayList<Main> d = new ArrayList<Main>();
int counter = 0;
foreach( var item in d )
{
if( item = "The string you desire" )
{
counter += 1;
}
}
// This is the total count of the string you wanted in the collection
console.write(counter);
如果你想让它成为一个通用函数,它只需要2个参数,集合和你想要的项目。