• ベストアンサー

MapからListへ

どなたか教えてください。 Mapからあるvalueの値のkeyの値をListへ追加していきたいのですがどのようにしたらよいでしょうか? testmap.put(1,TEST1) testmap.put(2,TEST2) testmap.put(3,TEST1) ・ ・ ・ testmapのvalue値「TEST1」のkey1、3をListへ追加したいです。

  • Java
  • 回答数2
  • ありがとう数1

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

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

mapに格納したkeyがInteger型たとすると、 int n = list.size(); for(int i = 0 ; i < n ; i++){  Object oKey = list.get(i);  Integer key = (Integer)oKey;  int nkey = key.intValue();  System.out.println(nKey); } こんな感じです。 わざと長く書きましたが、 int nKey = ((Integer)list.get(i)).intValue(); でも可能です。

user10
質問者

お礼

詳しく教えていただき、ありがとうございました!!

その他の回答 (1)

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

ズバッとコードを示します。 public List function(Object value){ List list = new ArrayList(); Set keyset = map.keySet(); Iterator it = keyset.iterator(); while(it.hasNext()){ Object key = it.next(); Object v = map.get(key); if(v.equals(value)){ list.add(key); } } return list; }

user10
質問者

補足

ありがとうございました!! もう1点質問させてください。 list.add(key); このObject型のkeyをint型に変換して使いたいのですがどのようにしたらいいでしょうか?

関連するQ&A

  • 2つのリストのマージ方法について

    2つのリストのマージ方法について 下記の要件を満たしたいと考えています。 ・リスト1・2をkeyをキーにマージしたい。  リスト1[0]:key=2, value1=b  リスト1[1]:key=3, value1=d  リスト1[2]:key=4, value1=e  ・  ・  ・  リスト2[0]:key=1, value2=A  リスト2[1]:key=2, value2=B  リスト2[2]:key=5, value2=F  リスト2[3]:key=6, value2=G  ・  ・  ・  ↓  リスト3[0]:key=1, value1=A, value=""  リスト3[1]:key=2, value1=b, value=B  リスト3[2]:key=3, value1=d, value=""  リスト3[3]:key=4, value1=e, value=""  リスト3[4]:key=5, value1="", value=F  リスト3[5]:key=6, value1="", value=G  ・  ・  ・ ・リスト1・2はkeyの昇順でソート済。各リスト内では重複しているkeyはない。 ・マージ後もkeyの昇順にしたい。 ・実際のリストはそれぞれ数万件~数十万件なので、パフォーマンスを考慮したい。 下記のように作成してみたのですが、無理やりやりました感があり、分かりづらくバグがありそうです。またループでnewもしてたりしてパフォーマンスも悪そうです。もっとスマートにパフォーマンスもよい方法がないでしょうか? int checkedCount = 0; for (int i = 0; i < list1.size(); i++) { String str1 = list1.get(i).get("key"); for (int j = checkedCount; j < list2.size(); j++) { Map<String, String> map3 = new HashMap<String, String>(); String str2 = list2.get(j).get("key"); if (str1.compareTo(str2) < 0) { if (i != list1.size() - 1) { map3.put("key", str1); map3.put("value1", list1.get(i).get("value1")); map3.put("value2", ""); list3.add(map3); break; } else { Map<String, String> map4 = new HashMap<String, String>(); map4.put("key", str2); map4.put("value1", ""); map4.put("value2", list2.get(j).get("value2")); list3.add(map4); } } else if (str1.compareTo(str2) == 0) { map3.put("key", str1); map3.put("value1", list1.get(i).get("value1")); map3.put("value2", list2.get(j).get("value2")); list3.add(map3); checkedCount = j + 1; break; } else { map3.put("key", str2); map3.put("value1", ""); map3.put("value2", list2.get(j).get("value2")); list3.add(map3); checkedCount = j + 1; } } }

    • ベストアンサー
    • Java
  • 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; } }

    • ベストアンサー
    • Java
  • Mapの要素の削除と挿入

    こんにちは。 Listに挿入されたMapでKeyがFLGのValueが1のものを List要素ごと削除しFlgが0のものに新しくmap.put("LBL","○");したいのですがどうもうまくいきません。 getListMap()はTestListクラスにあるMapの挿入されたリストを返すメソッドです。 よろしくお願いします。 Mapの中身はこのようになっています。 [key=TYPE:value=AAA0] [key=NO:value=000] [key=FLG:value=1] [key=TYPE:value=AAA1] [key=NO:value=001] [key=FLG:value=0] [key=TYPE:value=AAA2] [key=NO:value=002] [key=FLG:value=1] [key=TYPE:value=AAA3] [key=NO:value=003] [key=FLG:value=1] [key=TYPE:value=AAA4] [key=NO:value=004] [key=FLG:value=1] [key=TYPE:value=AAA5] [key=NO:value=005] [key=FLG:value=0] [key=TYPE:value=AAA6] [key=NO:value=006] [key=FLG:value=1] [key=TYPE:value=AAA7] [key=NO:value=007] [key=FLG:value=0] [key=TYPE:value=AAA8] [key=NO:value=008] [key=FLG:value=1] [key=TYPE:value=AAA9] [key=NO:value=009] [key=FLG:value=1] public class Test { public static void main(String[] args) { TestList tl = new TestList(); List list = tl.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.println("-------------------"); while(it.hasNext()){ Object key = it.next(); if(map.get(key)=="1"){ list.remove(i); }else{ map.put("LBL","○"); } System.out.print("[key=" + key); System.out.println(":value=" + map.get(key)+"]"); } } } }

    • ベストアンサー
    • Java
  • ListからMapを作成 MapのValueにはListをput

    すみません、どなたか教えて下さい。 あるListからMapを作成したく、同じkeyが存在する場合、valueのListへ値を追加したいですのですがConcurrentModificationExceptionエラーが返されてしまいます。エラーを返さないように変数を使い分け工夫したつもりですが。。。((1)でmapAにもaddされている!?)他に良い方法はないでしょうか? Map mapA = new TreeMap(); Map mapB = new TreeMap(); Iterator it = listA.iterator(); while (it.hasNext()) { Bean bean = (Bean)it.next(); List mapvaluelist = new ArrayList(); if (mapA.size()==0){ mapvaluelist.add(bean); mapA.put(bean.getName(),mapvaluelist); }else{ if (mapB.size()!=0){ mapA = mapB; } Set keyset = mapA.keySet(); Iterator itmap = keyset.iterator(); while (itmap.hasNext()){ String mapkey = (String)itmap.next(); if (bean.getName().equals(mapkey)){ mapvaluelist = (List)mapA.get(mapkey); mapvaluelist.add(bean); mapB.put(bean.getName(),mapvaluelist); (1) }else{ mapvaluelist.clear(); mapvaluelist.add(bean); mapB.put(bean.getName(),mapvaluelist); } } } }

  • Mapから特定のキーの情報を取得したい

    MapからforEachを使用してkeyとvalueを取得する際、下記のように記述すると思います。この時、forEachを使用してtestMapからkeyArrayに一致するkeyの情報だけ取得することはできますでしょうか? keyArray: number[] = [1, 2, 3]; testMap.forEach((value, key) => { });

  • Mapの扱いについて

    いつもお世話になっております。 ただ今Java1.3にてMapを使用したプログラムを作成しております。 String[] hoge = {"0","0","0","0"}; String[] key = {"いいい","ううう","えええ"}; int[] point = {0,1,3}; String[] value = {"5","8","2"}; Map map = new HashMap(); map.put("あああ",hoge); map.put("いいい",hoge); map.put("ううう",hoge); map.put("えええ",hoge); map.put("おおお",hoge); for (int i=0; i < key.length; i++) { String[] wk_hoge = (String)map.get(key[i]); wk_hoge[point[i]] = value[i]; map.put(key[i],wk_hoge); } 上記のように記述し、結果としては あああ="0","0","0","0" いいい="5","0","0","0" ううう="0","8","0","0" えええ="0","0","0","2" おおお="0","0","0","0" としたいのですが、実際の結果が あああ="5","8","0","2" いいい="5","8","0","2" ううう="5","8","0","2" えええ="5","8","0","2" おおお="5","8","0","2" となってしまいます。 なぜそのようになってしまうのか原因がわかりません。 どなたかアドバイスをお願い致します。

    • ベストアンサー
    • Java
  • HashMap要素の操作について

    過去質問を検索致しましたが、適当な質問を見つけられなかった為、質問をさせて頂きます。 ●下記コードのうち、AブロックとBブロックとでどのように異なる為、 Aブロックの値操作が、そのままHashMapへ反省されてしまうのかをご教示願えませんでしょうか? コメント"Aブロック"部分でのArrayList型変数へ操作した内容は、そのままHashMap内の当該キー要素に反映されてしまいます。 コメント"Bブロック"で行う、String型への操作は、HashMap内の当該キー要素に反映はされません。 ■実行環境 ・jdk1.3.1_11 ・Windows XP pro SP2 _________________________________________________ HashMap testMap = new HashMap(); // マップへArrayListとStringを追加 testMap.put("KEY_LIST", new ArrayList()); testMap.put("KEY_STRING", "stringVal"); // Aブロック ArrayList testList = (ArrayList) testMap.get("KEY_LIST"); testList.add("one"); testList.add("two"); testList.remove(0); // Bブロック String testString = (String) testMap.get("KEY_STRING"); testString = "one"; testString = ""; _________________________________________________

    • ベストアンサー
    • Java
  • android CSVファイルのデータを

    初心者ですが宜しくお願いします。 やりたい処理えですが、CSVファイルのデータをHashMapにセットしたいのです。 現在は下記のように直接値をセットしています。 この値をCSVからセットするにはどうすればよいでしょうか? HashMap<String, String> map = new HashMap<String, String>(); // キーと値のペアを格納 map.put( "Key1", "あ1001" ); map.put( "key2", "い1002" ); map.put( "Key3", "う1003" ); map.put( "key4", "え1004" ); map.put( "key5", "err" ); ------------------------------------ value.csv "key2", "い1002" "Key3", "う1003" "key4", "え1004" "key5", "err" ------------------------------------ 上記csvファイルを作り、読み込むところまではわかります。 ヒント、参考サイトや参考書の情報でもかまいません。 どうぞよろしくおねがいいたします。

    • ベストアンサー
    • Java
  • mapの値を全件取得

    いつも楽しく拝見させて頂いています。 mapオブジェクトをkeyの昇順でソートし、昇順でソートされた順にmapのvalueを取得したいって思ってます。 下記ソースで方針はあってますでしょうか? しかし下記ソースを実行すると※の行でClassCastExceptionが発生します。 String型にキャストしているつもりなのですが…なぜでしょうか? 初歩的な質問ですが宜しくお願いします。 ----------------------------------------以下ソース Map map = new TreeMap(); map.put(new Integer("12"), "000000000b"); map.put(new Integer("78"), "000000000a"); map.put(new Integer("39"), "000000000c"); map.put(new Integer("234"), "000000000g"); for(Iterator iterator = map.entrySet().iterator();iterator.hasNext();) {   Map.Entry entry = (Map.Entry)iterator.next(); ※ String key = (String)entry.getKey();   String value = (String)entry.getValue();   System.out.println(key + "=" + value);   } ・Jdk1.4.12 ・eclipse 3.0

    • ベストアンサー
    • Java
  • java のMAPをソートするとき

    以下のプログラムがあったとします、 Map<Integer, String> map = new HashMap<Integer, String>(); map.put( 0 , "abc" ); map.put( 4 , "efg" ); map.put( 1 , "hij" ); map.put( 3 , "klm" ); map.put( 2 , "npo" ); これで、mapのキーをソートするにはどうしたらいいでしょうか?

    • ベストアンサー
    • Java

専門家に質問してみよう