今、私は "ドラゴン"の配列を持っています。各項目には2つの値があります。 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の2つのドラゴンが配列にあります。私が達成したいのは、重複が見つかった場合、重複のカウントを最初のカウントに追加してから重複したDragonを削除することです。
ソートが正常に終了しましたが、配列の途中でnullになり、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とpopulation countの両方を持つことを意味します。私の設計上の欠陥のように聞こえます... – fge
配列の代わりにArrayListを使うのはどうですか? 'remove'は彼がやろうとしたものではないので、 – Tschallacka