Java 配列: 重複の特定
配列内で重複を検索する場合、不正確な結果につながる可能性のある落とし穴を避けることが不可欠です。提供されたコード スニペットでは、問題はネストされたループ構造内にあります。
for(j = 0; j < zipcodeList.length; j++){ for(k = 0; k < zipcodeList.length; k++){ if (zipcodeList[k] == zipcodeList[j]){ duplicates = true; } } }
このアプローチでは、重複がない場合でも重複を誤って true に設定します。問題は、j が k に等しい場合に発生します。これにより、一意の要素であっても条件 zipcodeList[k] == zipcodeList[j]` がトリガーされます。
答えは...
このエラーを修正するには、図に示すように、内側のループを k = j 1 で開始することでループ構造を改善できます。以下:
duplicates=false; for(j = 0; j < zipcodeList.length; j++){ for(k = j + 1; k < zipcodeList.length; k++){ if (k != j && zipcodeList[k] == zipcodeList[j]){ duplicates = true; } } }
この変更により、各要素を他の一意の要素とのみ比較するようになり、誤検知を効果的に防止できます。
以上がJava 配列内の重複を効率的に検出し、誤検知を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。