2011-08-05 14 views
8

以下のタイプのオブジェクトを作りたいと思います。これは、私がJavaで把握したいと思っている私のより高いレベルの要望です:キーと値のペアを持つJava製オブジェクトですか?

ListObject(key、String):すべてのキーは文字列値に対応しています。 keyは文字列そのものです

ListObject(key、String []):すべてのキーは文字列の配列に対応します。キーは文字列そのものです

ListObject(key、String、String []):キーごとに2つの値フィールドを持つ同じ取引です。

このタイプのオブジェクトはどのようにして作成し(使用しますか)

ありがとうございました。

+9

「マップ」と呼ばれています。 –

答えて

16

Listではなく、Mapが必要なようです。マップの実装についてはthe Javadocをチェックしてください。最も一般的なものはHashMapですが、ソートされた、並行した、確定的な反復可能な実装などもあります。

ListObject:すべてのキーは文字列値に対応します。キーは、文字列自体

Map<String, String> 

ListObjectである:文字列の配列にすべてのキーに相当します。同じ取引が、キーごとに2つの値のフィールドを持つ:キーは、文字列自体

Map<String, String[]> 

(又は好ましくはMap<String, List<String>>

ListObjectあります。

Map<String, UserDefinedClassWithTwoFields> 
4

Map<KeyType,ValueType>HashMap<KeyType, ValueType>TreeMap<KeyType, ValueType>などで実装されています。 - HashMapは順序付けられておらず、TreeMapが順序付けされています。

他の有用なマップが不変マップの実装であるHashMapが、挿入順に反復、およびユーティリティメソッドの束を有するグアバでcom.google.common.collect.Maps、及びcom.google.common.collect.ImmutableMap似ているLinkedHashMapあります。

文字列の配列に対応するキーについては、特定のキーに対して複数の値を持つマップであるMultimapを参照するとよいでしょう。

1

地図はJavaで連想配列を作成するために使用されています。

あなたの最初の例の地図。各StringキーはString値に関連付けられます。

2番目の例のマップ。値はStringの配列です。

最後の例では、2つのフィールド(文字列と文字列[])を持つ独自のクラスを作成する必要があります。次に、あなたのタイプのオブジェクトにStringを関連付けるマップを作成します。

0

JavaのMapタイプは、おそらくトリックを行います。 Map<KeyType, ValueType>にはキーと値のペアが格納されているため、Map<String, String>,Map<String, List<String>>、およびMap<String, SomePairType>となります。

Mapは単なるインタフェースです。実装を選択する必要があります。 HashMapとが最適です。どちらも良いですが、TreeMapは同等のキータイプでのみ動作します。 Stringは他の文字列に匹敵するため、キーの場合はいずれかのマップ実装を使用できます。

2

この目的でマップを使用できます。 地図のための一般的な構文は次のとおりです。

Map<String, SomeObject> = new HashMap<String, SomeObject>(); 

は今、Javaでの地図の4種類があります。

ハッシュマップ - あなたは要素がされる順序を気にしない場合は、このマップを使用しますマップを反復処理すると表示されます。

ハッシュテーブル - ハッシュマップの同期バージョン。

リンクされたハッシュマップ - これは、挿入順序を気にするときに使用します。

ツリーマップ - カスタムソート順が必要な場合に使用します。

関連する問題