从ArrayList获取重复数

例如,假设我有一个可以包含以下值的ArrayList

 x x x y y 

现在我要检索的是xx的数量,我希望能够区分我拥有的xy因为实际上,我可以在ArrayList中有任何对象,我必须能够告诉他们分开。

我想要做的是首先将ArrayList转换为LinkedHashSet ,这将保持排序并删除重复项,因此我只有xy但是我如何得到每个的数量并将其与正确的元素相关联?

总的来说,我想要做的是能够编写一个让我输出的toString方法:

 x3y2 

但是不知道xy是元素,因为它们可能是zw类的东西。

查看google guava中的Multiset: http : //docs.guava-libraries.googlecode.com/git-history/v11.0.2/javadoc/com/google/common/collect/Multiset.html

例:

 Multiset strings = HashMultiset.create(arrayList); int countX = strings.count("x"); // the count of x 

可以在番石榴维基上找到更多示例。

你想要做的是使用HashMap 。 将Object存储为键,将Long存储为出现次数。

这里有一些伪代码可以做你想做的事情。

 for(x in list) { if(x in Map) { map.put(x, map.get(x)++); } else { map.put(x, 1); } } 

然后,您可以遍历Map并打印值和出现次数。 我会让你写那个。 这很容易。

那么,为此你可以做的是从最后遍历list 。 保留一个计数器并继续检查对象的变化。 一旦检测到更改,请将计数器中的数字替换为current position + 1 。 这样做直到你到达第一个位置。