我试图计算使用此代码显示LinkedList中的唯一单词的次数:
for(int i2 = 0; i2 < a.size(); i2++)
{
word2 = a.get(i2);
for(int j2 = 0; j2 < a.size(); j2++)
{
if(word2 == a.get(j2))
{
counter++;
}
}
System.out.println(word2 + " : " + counter);
counter = 0;
}
但柜台打印出来: 字母:1 好的:1 Apple:1 字母:1 好的:1 Apple:1 字母:1 好的:1 Apple:1
显然不止一个词,但计数器永远不会高于一个。我认为内部for循环在if语句满足时停止,但我不希望它。有什么建议吗?
答案 0 :(得分:0)
你应该使用
word2.equals(a.get(j2))
使用“==”比较对那些不相等的字符串的引用。
顺便说一下,如果你有重复的话,你会多次为同一个单词打印计数器。假设您在列表中的2个位置上有Apple这个词。当你达到这两个位置时,计数器将达到2,你将打印(Apple:2)2次
答案 1 :(得分:0)
这对我来说似乎是java。您无法将字符串与(==)运算符进行比较。
if(word2.equals(a.get(j2)))
答案 2 :(得分:0)
只是一个新的添加!!!
正如@ user3412998所建议的那样,最好使用Sets以避免重复。
现在,如果您只需要使用ArrayList,那么您需要使用一个元素并使用循环检查该元素是否有多个副本。如果您使用字符串或我的包含方法,则可以通过.equals方法检查条件你正在插入对象(别忘了在相应的类中覆盖你的equals方法)。这是一个非常繁琐的过程,我不推荐它。
我相信最简单的方法是不在数组列表中添加重复元素。完成下面的代码看看..
if(!a.contains(word)){
a.add(word);
}
注意单词是一个String对象。
这里我在插入之前检查字符串已包含在ArrayList中的天气。 进行一些修改,以便您可以使用它,对阵列,或直接输入数据等。
我希望这有帮助..