私はpingを持つArraylistを持っています。これらは名前にリンクされた日付です。名前の重複をすべて削除し、最も近い名前を保持したいと思います。ArrayList重複削除
コード
private ArrayList <String> deleteDuplicates() {
ArrayList <Ping> tempPings = new ArrayList <Ping>();
tempPings.addAll(jaws.pastMonth());
for (int i = 0; i < tempPings.size(); i++) {
Ping tempPing = tempPings.get(i);
for (int j = i + 1; j < tempPings.size() - 1; j++) {
Ping tempPing2 = tempPings.get(j);
if (tempPing.getName().equals(tempPing2.getName())) {
if (changePingToDate(tempPing2).before(changePingToDate(tempPing))) {
tempPings.remove(j);
}
}
}
}
return pingToNames(tempPings);
}
changePingToDate()はグレゴリオ暦に日付文字列に変換する方法です。
このコードを使用すると、重複した部分の割合が高くなりますが、ループのたびに残りの部分が残ります。私はまた、日付を比較せずに同じことを試みたことがあります。誰も助けることができますか?
ありがとうございました!
@aribeiroこんにちは、私はその答えをチェックして、それは私の質問に役立ちません、私の.equalsは正常に動作しているようだ、名前はまったく同じです "メアリーリー"複数回、削除するものを選択しました。 –
'.remove()'を呼び出すと、リストのサイズを変更します。**あなたが見ているインデックスは**ループします。あなたは値をスキップしています。 –
イテレータを使用します。私はそれのためだけにここに別の答えを加えたくない。 SOとGoogleの両方で利用できる膨大なリソースがあります。 –