2012-05-01 12 views
2

TreeSet内の特定のregNumberを持つメンバーを検索しようとしています。しかし、regNumberは、TreeSetの要素の順序とは関係がありません。TreeSetの要素の順番は、最後/名前順になります。ツリーセット内の特定の要素を検索する

私が今やろうとしているのは、TreeSetのすべての要素を反復し、探しているregNumberに一致する要素を返すことです。それは良い練習ですか、それともあまりにも効率が悪いのですか?

public class Members implements Comperable <Members> { 

private String firstName; 
private String lastName; 
private int regNumber; 

} 

PS TreeSetの中の要素は、名前でインデックスを作成し、その後regNumberで検索しているという事実は、regNumberの視点から、あなたが持っていることを意味することに最初/最後の名前

+0

これは良い習慣ではありませんが、これらのすべてがあなたにとって必要条件であれば、他のことはできません。 –

+1

あなたの質問は、あなたがどのようにコレクションを使用する予定ですか?特に、なぜTreeSetを使用していますか?特定のregNumberを持つメンバーを検索する場合は、それらをマップに配置しないでください(regNumberが一意であると仮定して)。 – amaidment

答えて

8

で注文したままにしなければなりません順序付けられていないアイテムのコレクション。したがって、すべてのアイテムについて線形検索よりも優れた処理を行うことはできません。

より良いものをご希望の場合は、regNumberをハッシュテーブル(HashMapなど)のキーとして使用し、元のMemberオブジェクトを値として参照することができます。そうすれば、より多くのスペースを使用する代わりに、より効率的に検索することができます。

+1

+1は、regNumberをハッシュキーとして使用します。 regまたは名前で検索する必要がある場合は、双方向マップ(または2つの別々のハッシュマップ)を使用することを検討してください。 –

+0

また、 'TreeSet'を使用する理由があった場合は' TreeMap'を返します。 –

関連する問題