2012-03-07 8 views
1

私はこのような辞書とArrayListを作成しています。JavaでArraylist内の辞書データにアクセスするには?

Dictionary testDict, testDict2 = null; 
ArrayList al = new ArrayList(); 

testDict.put ("key1", dataVar1); 
testDict.put ("key2", dataVar2); 
testDict2.put ("key1", dataVar1); 
testDict2.put ("key2", dataVar2); 

al.add(testDict); 
al.add(testDict2); 

ここで私の問題は、どのようにして辞書内のデータにアクセスできますか?例えば、私はtestDictからkey1をどのように取得するのですか?

多くの事前のおかげで:)あなたがそのようなあなたの辞書を維持したいwhy'dわからない

+0

私は質問を得ることができません。適切なリスト項目を取得し、通常どおりに辞書にアクセスします。またはリストを繰り返し、各辞書にキーがないかチェックします。 –

+0

あなたは何をしようとしているのか分かりませんが、辞書からはjavadocs: '注:このクラスは廃止されました。新しい実装では、このクラスを拡張するのではなく、Mapインターフェイスを実装する必要があります。おそらくあなたは代わりにHashMapsを使うべきですし、同じキーで複数の値を取得したいのであれば、おそらくputAllメソッドで新しいHashMapを使うことができます...ちょっと推測してください – jambriz

+0

本当に初心者のようです質問。私は層の上にレイヤーがあるボード型のゲームに取り組んでいます。各レイヤーは辞書であり、ボード自体はarraylistです。私が知っていたarraylistからすぐにデータにアクセスする方法はありませんでした。私はこれがいくつかの質問に答えることを望む。 –

答えて

2

Java Docsすべてのディクショナリオブジェクト(Hashtableなど)には、その要素にアクセスするためのメソッドObject get(Object key)があります。あなたはどこにもあなたの辞書オブジェクトを初期化しないことを、

// first access testDict at index 0 in the ArrayList al 
// and then it's element with key "key1" 
al.get(0).get("key1"); 

注意をしてDictionaryクラスが抽象的であること:あなたの例では、そのようなtextDictにエントリーkey1の値にアクセスすることができました。だから、たとえばHashtableを使用することができます(またはあなたの代わりにHashMapより高速を使用し、同期アクセスを必要としない場合)は、このようなあなたのために:

testDict = new Hashtable<String, String>(); 

と(1秒正しいジェネリック型を使用してくださいあなたのdataVarが持っているタイプでなければなりません)

+0

ありがとうございます、あなたの答えは私に必要な答えと私にも良いルートを与えてくれました。 –

0

、しかしすることができます単にあなたの辞書をループ。

public Data getData(String key) { 
    for(Dictionary dict : al) { 
     Data result = dict.get(key); 
     if(result != null) 
      return result; 
     } 
    return null; 
} 
2

は多分この:testDict以来

al.get(0).get("key1"); 
2

は、あなたがget(0).でそれを取得することができ、位置0(あなたのArrayListの最初の要素)です。

例:

Dictionary firstDict = (Dictionary) al.get(0); 
Object key1Data = firstDict.get("key1"); 

シモンズ:あなたはそれを使用することを許可されている場合はジェネリックが大幅にあなたのコードを向上させることができます。

もう1つのポイントは... Dictionaryで、Mapではないのはなぜですか?

+0

私はしばらくjavaでコード化していません。あなた自身のような素敵なメンバーのおかげで、私はこれが理想的な方法ではないことを学んでいます。地図は –

関連する問題