プロが教える店舗&オフィスのセキュリティ対策術

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(キー)
みたいなとり方をしています。

A 回答 (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の配列をつくったことになります。

この回答への補足

できたみたいです!
正確にはちょっと違っていて、こんな感じです。

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だけ?みたいです)

配列の意味がほんとにないですよね 汗
ソースを見ても、キーは取得してあって、値を取ろうとしていますので
いまいち必要性がわかりませんが
(全部でデータが何個?とかやりやすいからかも??)
何はともあれ、なんとかなりそうです!

早速組み込んでみます!

ありがとうございました!

補足日時:2007/12/03 10:48
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/12/03 10:39

>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の構造がわかりませんので
具体的なサンプルコードが示せません。

これで何か、ヒントになりましたか?

この回答への補足

>こういうことだと思います。Mapが配列である必要性がありません。

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

補足日時:2007/11/30 22:44
    • good
    • 0

マップ配列なんて使ってるところを見たことがないのですが・・、一応マップの配列の定義のしかたを載せてみます。


質問者さんの根本的な間違いに気づくと思います。
わからないことがあれば、その部分をまた書いてください。

Map[] maps = new Map[3];
for (int i=0, length = map.size() ; i<length ; i++)
{
maps[i] = new HashMap();
}

この回答への補足

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

あとMAPの配列、と書いてしまいましたが、正しくは
「Mapオブジェクトの配列」
のようです

補足日時:2007/11/30 22:37
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/11/30 22:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!