如何在Java中查找特定元素在Array列表中出现的次数

时间:2014-11-04 17:52:34

标签: java arraylist while-loop bluej

我写了一个方法,目的是计算特定风味的薯片在蓝色小吃机中出现的次数

public int countPacks(String flavour){

        int n = 0;
        int nrFlavour = 0;
        while( n < packets.size()) {
            if( packets.get(n).equals(flavour)){
                nrFlavour++;
                n++;
            }
            else n++;
        }
        return nrFlavour;
}

我有一个Arraylist&#39;数据包&#39;它包含具有特定风味的PackOfCrisps对象。然而,当我添加说三包&#34;盐&#34;味道薯片,我运行这种方法,输入&#34;盐&#34;作为风味,它只返回0,好像没有具有风味&#34;盐&#34;的PackOfCrisps对象。 对不起,如果这没有意义。我是Java的新手,我尽力解释我的问题。 :)

2 个答案:

答案 0 :(得分:2)

列表packets包含PackOfCrisps个对象,该方法采用String参数。所以语句packets.get(n).equals(flavour)正在将PackOfCrisps对象与String进行比较,因此count变量永远不会增加。

您需要将flavour字符串与对象的特定字段进行比较,例如:

if(packets.get(n).getFlavour().equals(flavour)){

在旁注中,您可以使用简单的while循环替换for循环,并删除n的增量。

答案 1 :(得分:0)

您的问题有内置解决方案,您可以使用此method

您可以像这样重写countPacks方法:

public int countPacks(String flavour){
    return Collections.frequency(packets, flavour);
}