• ベストアンサー

LISTとMAPについて

以下のように記述されたコードで 他クラスからこのクラスのインスタンスを生成して tempMapのkeyとValueを抜き出したいのですが なにか良い方法ありますでしょうか? 宜しくお願いします。 public class TestListMap { protected List list = null; private Map tempMap = null; public TestListMap(){ list = new ArrayList(); for(int i=0; i < 10; i++ ){ tempMap = new HashMap(); tempMap.put("NO", "00" + i); tempMap.put("TYPE", "AAA" + i); if (i % 2 == 0 | i % 3 == 0) { tempMap.put("FLG", "1"); } else { tempMap.put("FLG", "0"); } list.add(tempMap); } } public List getListMap(){ return list; } }

質問者が選んだベストアンサー

  • ベストアンサー
  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.4

#3です。 すみません。よくみたら、先ほどのソースも違ってました。 TestListMap tlm = new TestListMap(); List list = tlm.getListMap(); for(int i = 0 ; i < list.size() ; i++){  Map map = (Map)list.get(i);  Set keyset = map.keySet();  Iterator it = keyset.iterator();  System.out.print("index=" + i);  while(it.hasNext()){   Object key = it.next();   System.out.print("key=" + key);   System.out.println(" value=" + map.get(key));  } } これで、全部取得できるはずです。

DRAGONEMK
質問者

お礼

どうもありがとうございました! バッチリ望んだ結果が得られました。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.3

すみません。間違いがありました。 正しくは、 TestListMap tlm = new TestListMap(); List list = tlm.getListMap();  //修正 Map map = (Map)list.get(0);   //追加 Set keyset = map.keySet(); Iterator it = keyset.iterator(); while(it.hasNext()){  Object key = it.next();  System.out.print("key=" + key);  System.out.println(" value=" + map.get(key)); }

すると、全ての回答が全文表示されます。
  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.2

このソースでは、 list.add(tempMap); の部分で、tempMapオブジェクトそのものを、listに追加しています。 従って、getListMap()を実行すれば、tempMapオブジェクトが取得できるはずです。 その後にkeySet()を実行すればいいと思います。 つまり、 TestListMap tlm = new TestistMap(); Map map = (Map)tlm.getListMap(0); Set keyset = map.keySet(); Iterator it = keyset.iterator(); while(it.hasNext()){  Object key = it.next();  System.out.print("key=" + key);  System.out.println(" value=" + map.get(key)); } ということです。

DRAGONEMK
質問者

補足

ありがとうございます。 早速試してみたのですが、 ListはMapにキャストできません と表示されエラーになってしまいました。

すると、全ての回答が全文表示されます。
  • yanmeng
  • ベストアンサー率0% (0/1)
回答No.1

keySet()を使えば簡単に取れると思いますよ

DRAGONEMK
質問者

補足

ありがとうございます。 この状態で他クラスからtempMapの要素を抜き出そうと したのですが修飾子がprivateなので できないのです。 継承してもダメみたいだし、 getListMapメソッドを使えばListに入っている 要素は抜き出せるのですが、 keyとValueを別々に抜き出したいのですが、 なにか方法はありますでしょうか? TestListMapクラスは変更できません。 宜しくお願いします。

すると、全ての回答が全文表示されます。

関連するQ&A