用于计算ArrayList中重复项的java嵌套循环无法正常工作
我有下面的方法,它采用字符串的ArrayList,其中每个字符串都是一个以“(x,y)”形式表示的坐标。该方法应该计算这些坐标在列表中多次出现的次数
这是我的代码:
public static int duplicateHouses(ArrayList<String> houses){
int duplicateCount = 0;
for(int i = 0; i < houses.size(); i++){
for(int j = i + 1; j < houses.size(); j++){
if((houses.get(i)).equals(houses.get(j))){
duplicateCount++;
}
}
}
return duplicateCount;
}
它最终返回的数字远远大于列表中的字符串数。我哪里做错了
# 1 楼答案
这是因为你循环了2次,所以每个条目都会告诉你我重复了2次
假设你在2号、5号和10号有相同的坐标/房子。现在根据现有的逻辑,当你的第一个循环为
i=2
运行时,它将为5
和10
给出是,你的duplicateCount
将为2,这是正确的。但是当你的第一个循环运行i=5
时,它会再次给出10的是。这就是问题所在所以,你可以做的是只为你的第一个for循环增加
duplicateCount
一次,这样即使还有100个条目,它也不会增加duplicateCount
,只会在连续运行第一个for循环时增加,这将防止重复增加duplicateCount
请尝试以下内容: