現在我有一個「龍」陣列。每個項目有兩個值。一個ID和一個計數。所以我的陣列看起來像這樣:如何檢查對象數組中對象的重複值,合併重複項的值,然後刪除重複項?
Dragon[] dragons = { new Dragon(2, 4),
new Dragon(83, 199),
new Dragon(492, 239),
new Dragon(2, 93),
new Dragon(24, 5)
};
正如你所看到的,我有兩個ID爲2的龍在數組中。我想完成的是,找到重複項時,只需將重複項的計數添加到第一項的計數中,然後刪除重複的龍。
我已經完成了這個排序成功,但我最終會在數組中間出現一個空,我不知道如何刪除null然後洗牌。
這是我迄今爲止,但它確實工作不正常:
public static void dupeCheck(Dragon[] dragons) {
int end = dragons.length;
for (int i = 0; i < end; i++) {
for (int j = i + 1; j < end; j++) {
if (dragons[i] != null && dragons[j] != null) {
if (dragons[i].getId() == dragons[j].getId()) {
dragons[i] = new Item(dragons[i].getId(), dragons[i].getCount() + dragons[j].getCount());
dragons[j] = null;
end--;
j--;
}
}
}
}
}
到目前爲止你有什麼?簡單的方法是創建一個列表,迭代你的數組,檢查ID是否存在,如果是這樣,則添加count,否則,添加對象 – Stultuske
因此,這意味着'Dragon'對象的ID和人口數都是?聽起來像是一個設計缺陷... – fge
如何使用ArrayList而不是數組。那麼你可以'刪除()'龍 – Tschallacka