【发布时间】:2014-05-02 16:12:40
【问题描述】:
我正在使用以下代码从 ArrayList 打印项目:
for(int i2 = 0; i2 < a.size(); i2++)
{
word2 = a.get(i2);
for(int j2 = 0; j2 < a.size(); j2++)
{
if(word2.equals(a.get(j2)))
{
counter++;
}
}
if(counter!=0)
{
System.out.println(word2 + " : " + counter);
}
counter = 0;
}
当我打印时,我不想打印出副本。就像现在一样,它将打印
Alphabet : 3
Alright : 3
Apple : 3
Alphabet : 3
Alright : 3
Apple : 3
Alphabet : 3
Alright : 3
Apple : 3
我只想打印
Alphabet : 3
Alright : 3
Apple : 3
如何使它不打印重复项?我必须使用 ArrayList 进行分配
【问题讨论】:
-
使用
Set而不是List -
@JarrodRoberson A set 将从列表中删除重复项,从而丢失有关字数的信息。
-
你可以从这里获得一些帮助:stackoverflow.com/questions/22412035/…
-
合适的集合是
Multimap -
@JarrodRoberson A
Multiset会更合适(Multimap需要一些任意值对象),但想法相同。单词可以插入到例如 Guava 的Multiset中,然后count()将返回给定单词的单词计数。您应该发布一个示例作为答案,这将是另一种不错的干净方法。