如何查找arraylist中不同项目的总数。

时间:2012-08-23 05:08:58

标签: java arraylist duplicates loops

我已经做了一些搜索,但我找不到有效的解决方案。我有一个arylylist存储字符串,如口香糖,袜子,OJ,狗粮......

我无法迭代列表以确定不同类型项目的总数。

ArrayList<String> Store = new ArrayList<String>();
    this.Store.add("Gum");
    this.Store.add("Gum");
    this.Store.add("Socks");
    this.Store.add("Candy");

该列表共有4个项目,但只有三种不同的项目(Gum,Sucks,Candy)。

我如何设计一种计算3?

的方法

4 个答案:

答案 0 :(得分:10)

Bhesh Gurung said是什么,但在代码中:

int numUnique = new HashSet<String>(Store).size();

如果您实际拥有的是StoreItems并且需要通过getName(),那么我会这样做

Set<String> itemNames = new HashSet<String>();
for (StoreItem item : Store)
    itemNames.add(item.getName());
int numUnique = itemNames.size();

答案 1 :(得分:5)

使用SetHashSet),其大小将为您提供所需内容。

答案 2 :(得分:1)

这看起来像是一个作业...所以,如果你不理解上面提出的HashSet解决方案(或者用HashMap来做同样的事情),那么考虑做这样的事情:

创建一个新的ArrayList

获取一个元素并检查它是否存在于新的ArrayList

如果它存在于新的ArrayList中,则不执行任何操作。否则加上它。

在检查ArrayList的最后一个元素之前执行此操作。

然后,新数组列表的大小应该是您要查找的数字。

答案 3 :(得分:0)

您可以使用 lastIndexOf 方法并遍历arraylist。

char count=0;

    for(char i=0; i<araylist.size(); i++){
        if(i == araylist.lastIndexOf(araylist.get(i))){
            count++;
        }
    }

测试。