13

だから私は別のカスタムクラス学生のセットを持つカスタムクラスクラスを持っています。したがって、次のようになります。

public class Class {
    private Set<Student> students;

    // other methods
}

ここで、セットの生徒に多くの生徒を追加および削除します。また、すでに生徒のセットに含まれている生徒のプライベート フィールドの多くも変更します。

質問: これを最適に実装するには、どのデータ構造を使用すればよいですか? set Student の Student オブジェクトのプロパティを変更する (それによってハッシュコードを変更する) ので、代わりに ArrayList を使用する必要がありますか?

4

9 に答える 9

1

質問: これを最適に実装するには、どのデータ構造を使用すればよいですか? set Student の Student オブジェクトのプロパティを変更する (それによってハッシュコードを変更する) ので、代わりに ArrayList を使用する必要がありますか?

hashCode または equals で使用される値を変更する場合は、HashMap または HashSet を使用することはできません。

あなたはたくさん削除して追加したいと言っています。問題は、(インデックスに基づいて) 順次またはランダムに実行するかどうかです。追加、削除する場合、間違いなく最良の選択は LinkedList です。オブジェクトにランダムにアクセスする場合は、ArrayList の方がはるかに効率的です。

于 2013-08-01T18:06:59.687 に答える