现在我有一个“龙”阵列。每个项目有两个值。一个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