0

それだけのUserProfileクラス、つまりユーザープロファイルが必要です。もちろん、このユーザー プロファイルにはいくつかの重要なユーザー データが含まれていますが、ユーザーの友人から送信されたメッセージのリストも必要です。

LinkedListこれらのメッセージを、ArrayListHashMapおよびに保存する必要がありますTreeMap。ただし、一度に 1 つだけで、データ構造ごとにメッセージを複製しないでください。基本的に、メッセージのデータ型を選択できる動的変数型のようなものです。

これは、どういうわけか、Javaで可能ですか? または私の最善のアプローチはこのようなものですか?つまり、2 つの異なるクラス (ユーザー プロファイル用) があり、1 つはメッセージをホストするクラス (そして適切な場所でandMap<K,V>を使用) と、メッセージをホストする別のクラス(適切な場所でandを使用) です。そしておそらくスーパークラスを使用するので、データ、年齢、住所などのフィールドの変数とメソッドを複製する必要はありません...HashMapTreeMapList<E>LinkedListArrayListUserProfile

何かご意見は?

4

3 に答える 3

1

まず第一に、メッセージを異なるコレクションに同時に追加してメッセージを複製するのではなく、同じオブジェクトへの個別の参照のみを保存します。(まあ、メッセージがlong... のようなプリミティブ型として表されていない限り、これらはコレクションに追加できません。)

これらすべてのコレクションを同じ UserProfile 内に配置できないのはなぜですか? これにより、キーまたはインデックスでメッセージにアクセスし、好きな方法でそれらを反復処理できます。

LinkedHashMapは、反復順序を保証するため、興味深いオプションになる可能性があります。そのため、Map でありながら、反復に関して List と同様に動作します。最終的には、特定のユーザーのメッセージにどのようにアクセスしたいかということになりますが、これについては詳しく説明していません。

更新: @Snake、オブジェクトへの参照のみを Java コレクションに格納できます。したがって、プリミティブlong値を直接格納することはできず、Long最初にオブジェクトに変換する必要があります。Java5以降、この変換はオートボクシングのために暗黙的である可能性があるため、コードには表示されませんが、それでも発生することに注意してください-たとえば

List<Long> list = new ArrayList<Long>();
list.add(1L); // the primitive value is boxed into a Long object,
              // which is then added to the list
long value = list.get(0); // the value of the Long object in the list is outboxed
                          // and assigned to the primitive variable
于 2010-05-21T12:45:46.257 に答える
0

私は最初の投稿で説明したものを使用することになりました:

これは、どういうわけか、Javaで可能ですか?または私の最善のアプローチはこのようなものですか?つまり、2つの異なるクラス(ユーザープロファイル用)があります。1つはメッセージをMapとしてホストし(次にHashMapとTreeMapを適切に使用します)、もう1つはメッセージをListとしてホストします(次にLinkedListとArrayListを使用します)適切な場合)。そして、おそらくUserProfileにスーパークラスを使用するので、データ、年齢、住所などのフィールドの変数とメソッドを複製する必要はありません...

于 2010-05-24T17:10:02.220 に答える
0

これが大学のプロジェクトである場合、あなたがやろうとしていることはこれだと思います。

Collection mycoll;
mycoll = new ArrayList();
for (Message m:message) {
  // do stuff and measure the performance
}
// do other stuff and measure the performance
mycoll = new LinkedList();
// do the same stuff as a above and measure the performance again
mycoll = new HashMap();
//... and so on

上記のように、コレクションにオブジェクトを追加しても、オブジェクトは複製されません。

于 2010-05-21T14:42:02.043 に答える