查找特定元素在“数组”列表中出现的次数

时间:2015-12-31 02:59:07

标签: java android arraylist collections

我试图找出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的出现次数。但是我怎样才能找到其他东西,比如我是否想要找到bc的出现?有没有办法可以做到?我可以有很多平等功能吗?

2 个答案:

答案 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个参数,集合和你想要的项目。