我已经做了一些搜索,但我找不到有效的解决方案。我有一个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?
的方法答案 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)
使用Set
(HashSet
),其大小将为您提供所需内容。
答案 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++;
}
}
测试。