1

我已经进行了一些搜索,但找不到有效的解决方案。我有一个存储字符串的数组列表,例如口香糖、袜子、OJ、狗粮……

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

IE。

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

该列表共有 4 个项目,但只有三种不同的项目(口香糖、吸吮、糖果)。

我将如何设计一种计算 3 的方法?

4

4 回答 4

10

Bhesh Gurung 所说的,但在代码中:

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();
于 2012-08-23T05:11:20.837 回答
5

使用Set( HashSet) ,其大小将为您提供所需的内容。

于 2012-08-23T05:10:22.553 回答
1

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

创建一个新的数组列表

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

如果它存在于新的 ArrayList 中,则什么也不做。否则添加它。

执行此操作,直到您检查了 ArrayList 的最后一个元素。

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

于 2012-08-23T05:16:04.280 回答
0

您可以使用lastIndexOf方法并循环遍历数组列表。

char count=0;

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

经测试。

于 2013-02-12T21:55:35.347 回答