• ベストアンサー

MAPの配列・・・???!!!

Mapというものを使うのが初めてなのですが、 よくわからなくなってしまいました。 他のプログラムから、 「MAPの配列で返ってくる」 のですが、このMAPの配列をintひとつ、ストリング2つから 作ろうとしているのですが、できずに困っています。 map[0]=("abc","ABC") map[1]=("def","DEF") map[2]=("ghi","GHI") ・ ・ みたいなイメージなのですが、エラーになります・・・ Map[] hairetu = new HashMap(); これでコンパイルできません。 HelloWorldMap.java:17: 互換性のない型 出現: java.util.HashMap 要求: java.util.Map[] Map[] hairetu = new HashMap(); Map[] hairetu; という宣言だけならできます。 受け渡し先でMapの配列を要求しているのでこのような形が必要なのですが・・・ ちなみにソースを見ると hairetu[i].get(キー) みたいなとり方をしています。

  • Java
  • 回答数3
  • ありがとう数13

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

  • ベストアンサー
  • ggaogg
  • ベストアンサー率43% (38/88)
回答No.3

>MAPの配列をintひとつ、ストリング2つから >作ろうとしているのですが、できずに困っています。 回答に対するコメントを見ていて思ったのですが、質問の内容は、MAPの配列をintひとつ、String2つからつくる方法のみということですよね。 だとしたらその回答だけ書くことにします。 int oneInt = 1;// ひとつのint String oneOfTwo = "一番目のString"; String twoOfTwo = "二番目のString"; Map[] twoMaps = new Map[2]; twoMaps[0] = new HashMap<Integer,String>(); twoMaps[1] = new HashMap<Integer,String>(); twoMap[0].put(oneInt, oneOfTwo); twoMap[1].put(oneInt, twoOfTwo); これで、ひとつのintと2つのStringからMapの配列をつくったことになります。

azicyan
質問者

お礼

すごい!! たぶんジャストだと思います! 今から早速試してみますね!! とてもうれしいです!

azicyan
質問者

補足

できたみたいです! 正確にはちょっと違っていて、こんな感じです。 import java.util.*; public class MapTest { public static void main(String[] args) { int oneInt = 1; String oneOfTwo = "一番目のString"; String twoOfTwo = "二番目のString"; Map[] twoMaps = new Map[2]; twoMaps[0] = new HashMap(); twoMaps[1] = new HashMap(); twoMaps[0].put(oneOfTwo,twoOfTwo); System.out.println(twoMaps[0].get(oneOfTwo)); } } キーも値もStringです。 JDKは1.3なので<>の書き方はできませんでした。 (1.3はstringだけ?みたいです) 配列の意味がほんとにないですよね 汗 ソースを見ても、キーは取得してあって、値を取ろうとしていますので いまいち必要性がわかりませんが (全部でデータが何個?とかやりやすいからかも??) 何はともあれ、なんとかなりそうです! 早速組み込んでみます! ありがとうございました!

その他の回答 (2)

  • HarukaV49
  • ベストアンサー率53% (48/89)
回答No.2

>map[0]=("abc","ABC") >(略) >みたいなイメージなのですが、エラーになります・・・ こういうイメージだと単に、 Map<String, String> hairetu = new HashMap<String, String>(); hairetu.put("abc", "ABC"); hairetu.put("def", "DEF"); hairetu.put("ghi", "GHI"); String value = hairetu.get("abc"); //Java2SDK1.4以前なら Map hairetu = new HashMap(); hairetu.put("abc", "ABC"); hairetu.put("def", "DEF"); hairetu.put("ghi", "GHI"); String value = (String)hairetu.get("abc"); こういうことだと思います。Mapが配列である必要性がありません。 >ちなみにソースを見ると >hairetu[i].get(キー) >みたいなとり方をしています。 この場合には、hairetu[i]のMapの構造がわかりませんので 具体的なサンプルコードが示せません。 これで何か、ヒントになりましたか?

azicyan
質問者

補足

>こういうことだと思います。Mapが配列である必要性がありません。 僕も必要性を感じないのですが、 外部モジュールが「MAPの配列で返す」仕様であるため仕方が無いのです。 hairetu[i].get(キー) これをhairetuのlength分まわして値を取得しているだけです。 好ましい、好ましくないに関わらず、 なるべく元ソースを変更しないで修正を行いたい為、 質問させていただきました。

  • ggaogg
  • ベストアンサー率43% (38/88)
回答No.1

マップ配列なんて使ってるところを見たことがないのですが・・、一応マップの配列の定義のしかたを載せてみます。 質問者さんの根本的な間違いに気づくと思います。 わからないことがあれば、その部分をまた書いてください。 Map[] maps = new Map[3]; for (int i=0, length = map.size() ; i<length ; i++) { maps[i] = new HashMap(); }

azicyan
質問者

お礼

Map[] maps = new Map[3]; ですね! 多分コレでできます! 助かりました!!

azicyan
質問者

補足

そうなんです。 全然サンプルが無いし、 僕自身も何で配列なのかがわからないんです。 キーによって値が返ってくるMapで配列にする必要性が・・・ ただ、そうはいってももとからあるプログラムが hairetu[i].get(キー) みたいなとり方をしていて、「間違いではない」ようなのです。 (ふつうはhairetu.get(キー)のようになりますよね) API仕様書を見ても 「MAPの配列を返します」 と書いてあり、 public Map[] となっているんです・・・ あとMAPの配列、と書いてしまいましたが、正しくは 「Mapオブジェクトの配列」 のようです

関連するQ&A

  • VBA:配列の中で文字列が何番目にあるか知りたい

    たとえば Hairetu = Array("ABC","DEF","GHI") としておいて配列から"DEF"が何番目にあるのかを検索する方法はないのでしょうか? よろしくお願いします。

  • 二次元配列の分割

    よろしくお願いします。 $hoge = array( "one" => array("abc" => "100", "def" => "200", "ghi" => "300"), "two" => array("abc" => "110", "def" => "210", "ghi" => "310"), "three" => array("abc" => "120", "def" => "220", "ghi" => "320") "four" => array("abc" => "130", "def" => "230", "ghi" => "330") ); というような配列があったとき、 abcが110以下のときと、110より大きい場合で分割した配列を 用意したいと考えてます。 具体的には、 $hoge1 = array( "one" => array("abc" => "100", "def" => "200", "ghi" => "300"), "two" => array("abc" => "110", "def" => "210", "ghi" => "310"), ); と $hoge2 = array( "three" => array("abc" => "120", "def" => "220", "ghi" => "320") "four" => array("abc" => "130", "def" => "230", "ghi" => "330") ); に分割したいと考えています。 どのように記述すればよいのでしょうか?

    • ベストアンサー
    • PHP
  • 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
  • 配列を使用して

    試しに1から150までの中から数字を1つ10回取得しコマンドプロンプト上に表示するというプログラムを作成しました。しかし、コンパイルはできたのですが、変な文字が表示されてしまいます。このプログラムではだめでしょうか? import java.util.*; import java.lang.*; public class hairetu { public static void main(String[] args) { Random generator = new Random(); int hairetu[] = new int[10]; for(int i=0; i<10; i++){ int ran = (int)(Math.random() * 150); hairetu[0]=ran; hairetu[1]=ran; hairetu[2]=ran; hairetu[3]=ran; hairetu[4]=ran; hairetu[5]=ran; hairetu[6]=ran; hairetu[7]=ran; hairetu[8]=ran; hairetu[9]=ran; } System.out.println(hairetu); } }

    • ベストアンサー
    • Java
  • QUERY_STRINGを連想配列に入れたい

    よろしくお願いします。 $_SERVER['QUERY_STRING']の値 q1=abc&q2=def&q3=ghi を連想配列に入れたいと思います。 $array = array("q1"=>"abc","q2"=>"def","q3"=>"ghi"); どのようにしたらQUERY_STRINGの値を連想配列に入れられますか?

    • ベストアンサー
    • PHP
  • 文字列を配列にしたい

    お世話になります。 PHP4.3.9を利用しているのですが、以下のような文字列を分割して、求める形の配列に入れたいのですが、何か良い方法はありますでしょうか? ■文字列 abc=123&def=456&ghi=789 ■このような形にしたいと思っています↓ $hoge = array(   "abc"=>"123",   "def"=>"456",   "ghi"=>"789" ) ヒントだけでも結構ですので、ご教示いただけると幸いです。宜しくお願いします。

    • ベストアンサー
    • PHP
  • VBAで配列のデータを検索

    初歩的なことかもしれませんが、自力ではどうしてもできなかったので質問させてください。 例えば dim 配列(5) as String 配列(0)=abc 配列(1)=123 配列(2)=def 配列(3)=456 配列(4)=ghi 配列(5)=789 といった配列がある場合で、配列()から「ghi」を検索したい場合は、 どのような手法を使えばよろしいでしょうか。

  • PHP 配列について

    PHPで簡単なプログラムを作っています。 上手い方法があれば教えてください。 例えば $arr = array(); $arr(0) = "ABC"; $arr(1) = "DEF"; $arr(2) = "GHI"; $arr(3) = "JKL"; $arr(4) = "MNO"; この様な配列があり、これを以下の様に「特定のデータを削除し空いているキーを詰めたい」場合どうしたら良いのでしょうか? この場合は"DEF"を削除。 $arr(0) = "ABC"; $arr(1) = "GHI"; $arr(2) = "JKL"; $arr(3) = "MNO"; アドバイスお願いします。

    • ベストアンサー
    • PHP
  • JSPでHashMap・配列の変数の値を扱う方法について

    サーブレット側でHashMap型の「map」に値をセットしてしています。 mapは配列となっています。 ■サーブレット -------------------------------------- HashMap map[] = new HashMap[10];  ・・省略・・ getRequest().setAttribute("map",map) -------------------------------------- 上記でセットした値をJSP側で値を参照したいと思っているのですが、 HashMap・配列の値をJSP側でどのように読み込む/記述したら良いのか 分かりません。 初歩的な質問で申し訳ございませんが、よろしくお願いいたします。

    • ベストアンサー
    • Java
  • EXCELVBA 配列値集計方法

    こんにちは、 配列の集計方法に関してお聞きしたいのですが、 配列1がありますて、 配列1(1,1)、配列1(1,2)の値をもとに (配列1(1,1)が重複しており、かつ 配列1(1,2)も重複している場合) 重複しているものがあれば 配列1(1,3)の値を合算したものを求め 配列2に格納するようにしたいのですが、 うまくロジックが組めません。 よい方法なあるでしょうか。 配列1内データ----------------- 配列1(1,1)=abc 配列1(1,2)=test1 配列1(1,3)=15 配列1(2,1)=def 配列1(2,2)=test1 配列1(2,3)=50 配列1(3,1)=abc 配列1(3,2)=test1 配列1(3,3)=111 配列1(4,1)=ghi 配列1(4,2)=test2 配列1(4,3)=80 配列1の値を集計後----------- 配列2(1,1)=abc 配列2(1,2)=test1 配列2(1,3)=116 配列2(2,1)=def 配列2(2,2)=test1 配列2(2,3)=50 配列2(3,1)=ghi 配列2(3,2)=test2 配列2(3,3)=80

専門家に質問してみよう