我有一個與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都有大量的資源可用。 –