2017-02-09 7 views
-1

私はいつもPHPで働いており、私はJavaを初めて使い慣れました。私はハッシュマップ、arraylistなどについていくつかのチュートリアルを読んだことがありますが、今私はどちらが正しい選択か混乱しています。 PHPで私はこのような配列を作成するために使用しました:PHPの型混合型多次元配列に対するJAVAの最良の同等ソリューションは何ですか?

$test['google']['color'] = "red"; 
$test['google']['value'] = 67; 
$test['IBM']['color'] = "blue"; 
$test['apple']['value'] = 23; 
. 
. 

私はまた、キーと値を検索したいと思います。 Javaの良い選択は何でしょうか?

+0

可能な重複(http://stackoverflow.com/questions/1067073/initialising-a-multidimensional-array-in-java) –

+0

これは型混合配列ではありません。あなたが見せているのは、キーが文字列である2次元の整数の配列です。だから、Javaでマップのマップとして表現するのは簡単です。しかし、一般的には、2つの言語間の正確な等価物を見つけるべきではないことに留意してください。むしろ、現在の言語で問題を適切に解決するのに役立つ正しいデータ構造を見つけて、他の言語のように見えるようにする必要があります。 – RealSkeptic

+0

申し訳ありませんが、私の悪い!私は型混合配列が必要です。あなたのアドバイスをありがとう。それは私が求めている理由です。どちらが正しいデータ構造であるかはわかりません:) – johnboy

答えて

0

これは型混合配列ではなく、内部に連想配列を持つ連想配列です。最後に整数型が1つしかありません。

Javaは連想配列をサポートしていませんが、これはマップを使用して簡単に実現できます。

Map<String, Int> map = new HashMap<String, Integer>(); 
map.put("name", 1); 
map.put("fname", 2); 

map.get("name"); // returns 1 

そして

Map<String, Map<String, Integer>> mapAssociated = new HashMap<String, Map<String, Integer>>; 
mapAssociated,put('example', map); 

しかし、正直に言うと。私はPHPで関連付けられた配列が好きではない、私はオブジェクトやコレクションを使用することを好む。おそらくあなたは間違った視点から問題を考えているでしょう。

あるいは、第二の溶液

Object[][] data = { 
    {"mykey1", "myval1"}, 
    {"mykey2", "myval2"}, 
    {new Date(), new Integer(1)}, 
}; 
[Javaで多次元配列を初期化]の
+0

ありがとう、私はこれを試してみるよ。しかし、私は上記の間違いをしました。私はタイプの混合配列が必要ですが、あなたのソリューションはまだ良い選択だろうと思われる? – johnboy

+0

私は今確信していません。おそらく、正確に必要なものを再考する必要がありますし、良い特性を持つ新しいクラスを作成する必要があります。 –

+0

@ johnboyでは、マップ宣言で 'Integer'を' Object'に置き換えることができます。そうすれば、どんな種類のオブジェクトも置くことができます。 – ilya

関連する問題