• ベストアンサー

HashMapについて

java初心者です。 HashMap oya= new HashMap(); HashMap child=null; child = new HashMap(); child.put("test1",Object1); child.put("test2",Object2); oya.put("Oya1",child); child = new HashMap(); child.put("test3",Object3); child.put("test4",Object4); child = new HashMap(); oya.put("Oya2",child); 上記のように値をセットした状態で ループの中でtest1の値を比較したいのです。 たとえば下記みたいに下記のやり方では出来なのは分かっています 値の比較の仕方を教えてください。 for(int i=0;oya.size();i++){ if(test1.equals("aaaa")){ bbb = "kkk"; break; } } よろしくお願いします。

  • Java
  • 回答数8
  • ありがとう数6

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

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.3

>> Object1やObject2は変数でしょうか? そうだとしたら、その型は何でしょう? > 変数で、boolean型です。 Javaではクラス名を大文字で始め、変数名は小文字で始めるのが標準的なので、覚えておくといいですよ。そのほうがコードを読む人が混乱しません。 > 以下のようなことをHashMapを使ってやりたいのです。 元々の質問文ではtest1.equals("aaaa")という文字列の比較だったものが、今回の補足ではaaa[i]==falseとbooleanの比較になっています。何を何と比較したいのかが相変わらず分かりづらいです。 ちょっと整理しますが、 1. oyaというHashMapには、キーの文字列("Oya1", "Oya2")と子HashMapの対応が入っている 2. 子HashMapには、キーの文字列("test1", "test2"など)とbooleanの対応が入っている ここまでは合っていますね? 知りたいことは何ですか? a. oyaに入っている子HashMapを1つずつ取り出すようなループの書き方 b. 子HashMapにキー"test1"を与えて、booleanの値を取り出す方法 c. 前項で取り出したbooleanの値を、定数falseと比較する方法 d. 上に書かれていることはどれも知りたいことと関係ない e. その他 もしa.ならば、oya.values()を呼ぶとCollectionが返ってくるので、そのiterator()メソッドを呼んで、Iteratorでループを回せばいいんじゃないでしょうか。これだと"Oya1"などのキー文字列は使いません。 ただ、元々の質問が「値の比較の仕方を教えてください」なのでこれは違うかなという気がします。

tamuneko
質問者

お礼

まとまりのない質問に丁寧な回答ありがとうございました。 皆さんのような方々がいるので初心者PGにとって心強いです。

tamuneko
質問者

補足

回答ありがとうございます。 >ちょっと整理しますが、 >1. oyaというHashMapには、キーの文字列("Oya1", "Oya2")と子HashMapの対応が入っている >2. 子HashMapには、キーの文字列("test1", "test2"など)とbooleanの対応が入っている >ここまでは合っていますね? 合っております。 a,b,cいずれも処理をしなければならないのですが、特に知りたいのは aです。 よろしくお願いいたします。

その他の回答 (7)

回答No.8

あぁ・・。ひっさしぶりに来たもんだから、混乱させてしまったみたいですね。 私が「アドバイス」として回答したNo.7の内容は、質問者さんとか既に回答された特定の方向けといったものより、あくまで第三者的なものです。いかんせん、こちらのサイトでは、「はてな」とかと違って一旦締め切ってしまうと、後からの追記が出来にくくなってしまいますから。(よって、そのままスルーでも良かったのですが。) 最初は、MapだからgetValueメソッドを使えばいいんじゃないかなと思ったのですが、とりあえずはNo.4の補足欄にあったソースを (build 1.5.0_18-b02)で実行。ただ、それではうまくいかなかったので少しばかり修正した内容をここに追記してみました。(が、かな~りおせっかいだったようで。) [JDK5以降(JDK6など)でのコレクション使用時] ・ジェネリックスを使用。(コレクションのインスタンス生成時に、型引数<K,V>によって格納できる型を指定。) ・明示的なキャストは不要。(JDKが内部でうまく処理してくれる。) [JDK1.4以前(JDK1.3など)でのコレクション使用時] ・ジェネリックスの使用は不可能。(未対応のため。) ・明示的なキャストが必要。(うまくいかないと、ClassCastExceptionをスロー。) >指摘されたとおりにキャスト削除できるか、試してみますね。 たぶん、質問者さんのjavaのバージョンではジェネリックスは未対応だと思いますので、キャストの削除は出来ないと思います。(JDKに怒られると思う。) 基本的に、1つのPC内に異なるJDKのバージョンをいくつもインストールして利用する事は可能です。それじゃあ、どういうふうに使い分けるのかというと、ポイントは「環境変数PATH」の設定です。実際には、PATHの設定をしなくてもJDKをインストールしただけでJavaの開発は出来るのですが、その場合には、どのバージョンのJDKを使用するのかを絶対パスで指定するわけです。ただ、それではとても長くなってしまうので、相対パスを使って「javac」とか「java」のコマンドを使用したいという方は、環境変数PATHに使用したいJDKのバージョンのbinディレクトリまでのパスを指定するわけです。(別バージョンのJDKを使用する時には、毎回そこを修正する。) もっとも、最新のJDKをインストールしていれば、「-source 1.4」や「-source 5」といったオプションを用いて簡単に別バージョンとしてコンパイルする事も可能です。(Eclipseなどでは、これとおんなじようなことを、GUI上で実現しているんだと思う。)

参考URL:
http://www.techscore.com/tech/J2SE/Utility/4.html
tamuneko
質問者

お礼

いろいろと勉強になりました。 ありがとうございました。

回答No.7

ちゃんと、lnumに2が入っていましたね。 JDK5以降で、「-Xlint:unchecked オプションを指定して~」などと表示される方は、以下のように型引数を2つ指定すればいいと思う。 HashMap<String,HashMap> oya = new HashMap<String,HashMap>(); HashMap<String,String> child = null; child = new HashMap<String,String>(); あと、if文中の不要なキャストの削除2つも忘れずに。

tamuneko
質問者

お礼

javaのバージョンの関係でHashMapの型の指定はできないみたいです。 >あと、if文中の不要なキャストの削除2つも忘れずに。 (Boolean.parseBoolean(((HashMap)oya.get(key)).get("aaa").toString())).booleanValue() == falseとしないとコンパイルが通らなかったです。 指摘されたとおりにキャスト削除できるか、試してみますね。 ありがとうございました。

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.6

> 特に知りたいのはaです。 aのやり方はNo.3に書いてありますが、実際に試してみましたか? コードで書けばこんな感じ。 Collection values = oya.values(); Iterator iter = values.iterator(); while (iter.hasNext()) {  HashMap ko = (HashMap)iter.next();  // 子HashMapであるkoに対する操作をここに書く } なお、最近のJavaならば本当はHashMapなどに対してgenericsを使いたいところですが、本題から外れるので省略します。 あとNo.4さん、 > child = new HashMap();とした時点で、恐らくoya1の持つchildの中身も変わってしまいませんか? この心配は無用です。

tamuneko
質問者

お礼

書いていただいたコードを参考とさせていただきました。 ありがとうございました。

  • coopy72v
  • ベストアンサー率12% (1/8)
回答No.5

↓3行目 child.get です…orz

  • coopy72v
  • ベストアンサー率12% (1/8)
回答No.4

質問を取り違えていたら申し訳ないです とりあえず…値の取得方法はご存知なのでしょうか? test1をキーに持つobject1を何かと比較するならば、chilg.get("test1")で、object1を取得できるので、それを使って比較します… また、HashMapはobject型出なければならないのでboolean型は無理です Boolean型なら大丈夫。型の違いについては検索してください 少し気になるのが child = new HashMap(); child.put("test1",Object1); child.put("test2",Object2); oya.put("Oya1",child); おそらくここまでで、oya1の中に、child(それに含まれるtest1とtest2)を持たせて child = new HashMap(); child.put("test3",Object3); child.put("test4",Object4); child = new HashMap();←これは間違え? oya.put("Oya2",child); ここまでで、oya2の中にはchild、それに続くtest3とtest4を持たせて という感じなのかな?と思うのですが child = new HashMap();とした時点で、恐らくoya1の持つchildの中身も変わってしまいませんか? 確信があって…ではないですので、間違っていたら本当に申し訳ないのですが これが正しかった場合、oya1とoya2の中身は「同じ物」のまま、childの変更に合わせて変わっていく気がします…

tamuneko
質問者

補足

回答ありがとうございます。 皆さんの意見を参考に自分なりにやってみましたが、、 こんな感じでいいのでしょうか。 HashMap oya = new HashMap(); HashMap child=null; child = new HashMap(); child.put("aaa","true"); child.put("bbb","1"); child.put("ccc","さしすせそ"); child.put("ddd","たちつてと"); oya.put("oya_1",child); child = new HashMap(); child.put("aaa","false"); child.put("bbb","2"); child.put("ccc","まみむめも"); child.put("ddd","らりるれろ"); oya.put("oya_2",child); long lnum=0; Set set = oya.keySet(); Iterator iter = set.iterator(); while(iter.hasNext()){ Object key = iter.next(); if( Boolean.parseBoolean(((HashMap)oya.get(key)).get("aaa").toString()) == false) lnum = Long.parseLong(((HashMap)oya.get(key)).get("bbb").toString()); break; } }

  • OKbokuzyo
  • ベストアンサー率43% (130/296)
回答No.2

#1さんと同様に何を聞きたいのかはよくわかりませんが‥ HashMap内に、あるオブジェクトが含まれているかどうかを調べたいなら for文を使わなくともcontainsValueメソッドが使えます。 // "aaaa"というStringオブジェクトを1つ以上持つならtrueを返す child.containsValue("aaaa"); また、Keyを調べたいならcontainsKeyメソッドが使えます。 // "test1"というキーをchildが保持するならtrueを返す child.containsKey("test1"); ※ HashMapに限った話ではないですが、contains系のメソッドは内部的には引数で指定したオブジェクトのクラスのequalsメソッドによる比較が行われていることには注意してください。

tamuneko
質問者

お礼

containsValueの使い方もこれから勉強いたします。 ありがとうございました。

tamuneko
質問者

補足

分かりにくくて申し訳ありません。 oya(key,child)セットされているchildのkeyに関連付けられている値をoyaの数だけループして判定したのですが。もともと配列に格納されている値の判定をやっていたのですが、HashMapを使うことになったので、こういう処理が要求されています。

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

何を何と比較したいのか、文面から読み取るのが難しいです。 「test1の値を比較したい」とありますが、上半分のコードには"test1"という文字列は出てくるのに対して下半分のコードに出てくるtest1は変数のように見えます。 また、Object1やObject2は変数でしょうか? そうだとしたら、その型は何でしょう? 「"test1"という文字列に関連づけられた変数Object1の内容を文字列"aaaa"と比較したい」ということかと想像しましたが、合っていますか?

tamuneko
質問者

補足

すみませんわかりにくい質問で。 「test1の値を比較したい」とありますが、上半分のコードには"test1"という文字列は出てくるのに対して下半分のコードに出てくるtest1は変数のように見えます。 >下のコードのtest1はchildのキーです。 また、Object1やObject2は変数でしょうか? そうだとしたら、その型は何でしょう? >変数で、boolean型です。 「"test1"という文字列に関連づけられた変数Object1の内容を文字列"aaaa"と比較したい」ということかと想像しましたが、合っていますか? >合っています。childのtest1に関連付けれたObject1をOyaの数だけ比較したいのです。  以下のようなことをHashMapを使ってやりたいのです。よろしくお願いいたします。 for (int i=0;i<Count;i++) { if (aaa[i]==false || bbb[i]==false) { ttt=false; break; } }

関連するQ&A

  • HashMapについて

    【Java-Class】 JavaでDBの終了まで、日付・DB有無フラグを退避する。 【JSP】 DB有無フラグが存在する場合は"・"をカレンダーに表示する。 という処理を行いたいと思います。 HashMapを使用して put(),get()を使用したいと思いますが、get()を実行した際にNullPointerExceptionが表示されてしまいます。 エラーを見る限りではputの際に配列に設定していないのが原因なのではないかと思いますが、 修正方法がよくわかりません。 どうかよろしくお願いします。 ===DBSelect.java================================= CalenderHash hash = new CalenderHash(); /* DB終了まで */ while(rs.next()){ // 値の格納 hash.HashPut(rs.getString(YMD), "1"); } ===CalenderHash.java============================= public class CalenderHash { protected HashMap ht; public CalenderHash(){ } public void HashPut(Object YMD,Object Flg){ ht.put(YMD,Flg); } public Object get( Object key ) { return(ht.get(key)); } ==JSPの一部 ============================ for ( int i=1; i<=6; i++){ out.println("<TR ALIGN='right'>"); out.println("<TD>"); <省略> YearMD = year + month + Day; mark = ""; // 値の取得 if ( hash.get(YearMD).equals("1")){ mark = "・"; } %> <A HREF="/Schedule/jsp/memo.jsp?Ymd=<%= YearMD %> "><%= mark %><%= cntday %></A> &nbsp; <% } out.println("</TD>"); } out.println("</TR>"); }

    • ベストアンサー
    • Java
  • HashMap.putについて

    ご質問させて頂きます。 hashMap.putの使い方が良く分かりません。 例えば、以下のようなkudamono.csvファイルがあるとします。 ------------------- A,2003/01/01,スイカ B,2003/02/01,バナナ C,2003/03/01,メロン D,2003/04/01,イチゴ ------------------- このデータをhashMap.putでセットしたいので 以下のようなクラスにしたんですが コンパイルエラーが出てしまいます。 ------------------- /*HashMap生成(クラス変数)*/ public static HashMap hashMap = new HashMap(); public static void main(String args[]) throws Exception { FileReader filereader = new FileReader("kudamono.csv"); BufferedReader bufferedreader = new BufferedReader(filereader); String line; int i = 1; int j = 0; while((line = bufferedreader.readLine()) != null) { System.out.println("Start line at " + i); StringTokenizer stringTokenizerTest = new StringTokenizer(line, ","); while(stringTokenizerTest.hasMoreTokens()) { HashMap.put(stringTokenizerTest.nextToken().toString()); j++; } i++; } filereader.close(); } } --------------- たぶんHashMap.putをする前に キーをセットしたり変数を宣言したりすると思うのですが その辺が良く分かりません。 ご教授して頂けたら幸いです。

    • ベストアンサー
    • Java
  • HashMapについて

    質問させてください 以下に簡単なコードをJBuilderで作成しました。 printでブレークをはってmapインスタンスを評価してみると、mapに20個のキーが登録されるはずが、 16個しかいません。 この時点でstr1[16]が評価しても表示されていないのですが、map.get()で正常に取得はできています。 どのようなことが考えられるか、わかる型がいましたら教えてください。よろしくお願いいたします。 import java.util.*; class Test { public static void main(String[]args){ HashMap map = new HashMap(); String str1[] = new String[20]; String str2[] = new String[20]; for(int i = 0; i < 20; i ++){ str1[i] = new String(Integer.toString(i)); str2[i] = new String(Integer.toString(i * 10)); map.put(str1[i],str2[i]); } System.out.println("デバック用ブレーク"); System.out.println(map.get(str1[11])); } }

    • ベストアンサー
    • Java
  • ArrayList内HashMapの取得

    基本的で申し訳ないのですが一番下の行で リストの3つめの要素内のkey=key2でyeahをコンソールに出力したいです。 どのように取得すればいいのでしょうか? list.get(2).get("key2")っぽいかんじで... ArrayList list = new ArrayList(); for (int i = 0; i < 5; i++) { HashMap map = new HashMap(); map.put("key1", "hello"); map.put("key2", "yeah"); map.put("key3", "boo"); list.add(map); } System.out.println(list.get(2));

    • ベストアンサー
    • Java
  • javaの連想配列について教えてください

    お世話になります。 javaの連想配列について教えてください。 やりたいことは下記のようなデータを作成したいです。 ================================================ {   "shcool" : {          "class" : "A",          "yamada" : {                "class" : "AA",                "height" : 165,                "weight" : 60         },          "saitou" : {                "class" : "AB",                "height" : 170,                "weight" : 65         }   } } ================================================ 下記HPを参考してHashMap+HashMapで作成したのですがうまくいきません。 http://www.atmarkit.co.jp/fjava/javatips/081java010.html Map<String, Object> map = new HashMap<String, Object>(); map.put("school", new HashMap<String, Object>()); ((Map) map.get("school")).put("class", "A"); ((Map) map.get("school")).put("yamada", new HashMap<String, Object>()); ((Map) map.get("school")).get("yamada").put("class", "AB"); ・・・ としても下記エラーとなってしまいます。 ----------------------------------------------------- エラー: シンボルを見つけられません ((Map) map.get("school")).get("yamada").put("class", "AB");                            ^ シンボル: メソッド put(String,String) ----------------------------------------------------- 途中のschoolのvalueにHashMapを入れるところまではうまくいっているようですが、 yamadaのvalueにHashMapを入れて.put()の仕方がわかりません。。。 上記データをHashMap+HashMapで作成するにはどうしたらよいでしょうか? ぜひご教示いただけると嬉しいです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • HashMap(J2SDK1.4.2_09)について

    import java.util.*; class BubbleSort { public static void Sort(double[] a) { HashMap hmap = new HashMap(); // ☆ int m, i, j; double n, t; for(i=0; i<a.length; i++) { hmap.put(a[i], i); // (1) } for(i=0; i<a.length; i++) { m = hmap.get(a[i]); // (2) if(m >= 9) { System.out.println("キー " + (m+1) + " の値=" + a[i]); } else { System.out.println("キー " + (m+1) + " の 値=" + a[i]); } } } public static void main(String args[]) { double[] a = {7.6, 7.8, 5.6, 4.1, 0.3, 9.9, 1.5, 8.1, 7.1, 5.3}; Sort(a); } } 上記のように、(1)ではkey(main文にある各配列要素)をvalue(keyの要素に対応する番号)に対応付けする、(2)では指定したキーに対応した値を返す、といったことをしたいのですが、エラーが出てしまいコンパイルできません。J2SDK5.0では、☆の部分を、 HashMap<Double,Integer> hmap = new HashMap<Double,Integer>(); のようにすればコンパイル、実行できます。しかし事情があって1.4でしたいのです。どのようにすればできるでしょうか?宜しくお願いします。

    • ベストアンサー
    • 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
  • ArrayListとHashMapを利用する問題について

    『問題』 (1)ArrayListのオブジェクトを生成する。 (2)「何回入力しますか?」と出力し、入力処理を行う。 (3)(2)で入力された回数分、以下の処理を行う。   1)HashMapのオブジェクトを生成する。   2)「名前を入力して下さい。」と出力し、入力処理を行う。 3)「性別を入力して下さい。」と出力し、入力処理を行う。   4)「性別を入力して下さい。」と出力し、入力処理を行う。 5) 1)で作成したHashMapに、それぞれ入力された 名前・年齢・性別を設定する。   6)値を設定したHashMapを(1)で作成したArrayListへ格納する。 (4)ArrayListの件数分、以下の処理を行う。   1)ArrayListより、HashMapを取得する。   2)取得したHashMapより、それぞれ設定されている 名前・年齢・性別を取得する。   3)HashMapより取得した名前・年齢・性別を出力する。 『実行結果』 何回入力しますか? 2 名前を入力して下さい。 iwata 年齢を入力して下さい。 27 性別を入力して下さい。 men 名前を入力して下さい。 hana 年齢を入力して下さい。 21 性別を入力して下さい。 women 名前=iwata 年齢=27 性別=men 名前=hana 年齢=21 性別=women 上記のようなプログラムを書く問題について質問します。 (3)までは自力で書けて実行結果もこの通りになったのですが、 (4)が分からずに、実行結果では値の部分がnullと出力されて しまいました。自分でもこの記述は間違っているというのは感じる のですが、どうしたら値がちゃんと格納されるのか分かりません。 「ArrayListより、HashMapを取得する。」←特にこの部分を どう記述してよいのか・・・ 分かる方、上記の部分の記述方法だけでも構わないので教えて下さい。 『自分で書いたプログラム』 import java.util.*; import java.io.*; public class Sample02{ public static void main(String[] args)throws IOException{ ArrayList list = new ArrayList(); System.out.println("何回で入力しますか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); for(int i=0; i<num; i++){ HashMap map = new HashMap(); System.out.println("名前を入力して下さい。"); String name = br.readLine(); System.out.println("年齢を入力して下さい。"); String age = br.readLine(); System.out.println("性別を入力して下さい。"); String sex= br.readLine(); map.put("名前", name); map.put("年齢",age); map.put("性別",sex); list.add(name); list.add(age); list.add(sex); } for(int i=0; i<num; i++){ HashMap map = new HashMap(); String name = (String)map.get("名前"); String age = (String)map.get("年齢"); String sex = (String)map.get("性別"); System.out.println("名前=" + name); System.out.println("年齢=" + age); System.out.println("性別=" + sex); } } }

    • ベストアンサー
    • Java
  • android HashMapのValueが取得で

    当サイトでご援助下さった皆様、ありがとうございました。 皆様のおかげで、なんとか下記のようなコードを組むことができました。 処理内容はcsvファイルを読み込み、Tokenizerで分割してArrayListに入れています。そしてListの値をHashMapにputしているのですが、キーを指定してもvalueを取得できません。 テキストビューでvalueを取得しようとしたのですが(//確認 ■■の部分)、値が返ってきてないようです。 HashMapにはちゃんとセットされているとおもうのですが・・・ 下記がコードです。 たびたびの質問で恐縮ですが、皆様のお知恵をお借りできればと思います。 csvファイル ----------------- "kye1 , 良い" "kye2 , 普通" "kye3 , 悪い" ----------------- public class TestCsvActivity extends Activity { String path = "/sdcard/test.csv"; Spinner mSpinner1; TextView mTextView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // ハッシュマップ mapSet(); Button button1 = (Button)findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener() { //@Override public void onClick(View v) { //Activity終了 finishActivity(); } }); } private void mapSet(){ try { // create reader InputStream input = new FileInputStream(path); InputStreamReader ireader=new InputStreamReader(input, "UTF-8"); CSVReader reader = new CSVReader(ireader,',','"',0); String[] csv; List<String> lists = new ArrayList<String>(); while ((csv = reader.readNext()) != null) { StringTokenizer tok = new StringTokenizer(csv[0], ","); while (tok.hasMoreTokens()) { String s = tok.nextToken(); //アイテムの追加 lists.add(s); } HashMap<String ,String> map = new HashMap<String ,String>(); for(int i = 0; i < lists.size(); i = i + 2){ String key = lists.get(i); String value = lists.get(i+1); map.put(key,value); } // 確認 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ TextView tv = (TextView)findViewById(R.id.textView1); tv.setText( map.get("key1") ); //■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ } } catch (FileNotFoundException e) { Log.e("ERROR", e.toString()); } catch (UnsupportedEncodingException e) { Log.e("ERROR", e.toString()); } catch (IOException e) { Log.e("ERROR", e.toString()); } } private void finishActivity(){ //Activity終了 finish(); return; } }

  • android HashMapについて助言お願いし

    初心者ですが、どうぞ宜しくお願いします。 下記コードでは、マップに 「 map.put( "Key1", "val1" ); map.put( "key2", "val2" ); 」を追加しているのですが、このデータをキーから取り出しテキストビューに表示しようとしています。 このままではエラーはないのですが、何も表示されない状況です。 初心者の無知な質問となりますが、 テキストビューへの表示方法はどのようにすればよいのでしょうか? 何か別の方法でもよいので、ご教授宜しくお願いいたします。 -------------------------------------------------------------------- <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:text="TextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv1"></TextView> </LinearLayout> ------------------------------------------------------------ package com.test; import java.util.HashMap; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class TestActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //1)HashMapからMapのインスタンスを生成 HashMap<String, String> map = new HashMap<String, String>(); // キーと値のペアを格納 map.put( "Key1", "val1" ); map.put( "key2", "val2" ); // 指定したキーに対応する値を取得. String val = (String)map.get( "key1" ); // テキストビュー取得 TextView tv = (TextView)findViewById(R.id.tv1); tv.setText(val); } }

    • ベストアンサー
    • Java

専門家に質問してみよう