🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

1257閲覧

2つの配列から連想配列を作成する方法

d_96a

総合スコア15

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2019/12/23 01:42

###実現したいこと
key{1,2,3,4}、value1{aa,bb,cc,dd}の二つの配列から
main{1:aa,2:bb.3:cc,4:dd}という連想配列を作成するにはどうすればよいでしょうか。
ネットで検索してもPHPやJavaScriptのものばかりでjavaの方法が見つからないため、
ご存じであれば、ご提示いただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2019/12/23 01:49

key配列の要素分をループで回して、valueをその順番にHashMapで組み合わせていけば良いのではないでしょうか。
d_96a

2019/12/23 01:53

そういった方法があるのですね。 試してみたいと思います。 ありがとうございます。
guest

回答2

0

ループで地道にやればいいレベルの話ではあるのですが、今どきのプログラマならば「zip関数」で品質を保証するでしょう。だいたいの言語で「zip関数」は何かしらの形で提供されているので、一度覚えてしまえば処理の意図が明確となり、コードリーディングという場面でも非常に有利です。

関数化もせず、for文でベタベタっと実装してしまった場合、後で読む人はその実装方法から逆算して「おそらく〇〇したいのだろう」という憶測で読み進めることになり、細かな遅延も発生してしまいます。

さてさて、残念ながらJava8のstreamではzipが実装されていないので、自分で実装するかGuava等の関数型言語の影響を受けているライブラリに助けてもらうことになります。以下Guavaを使ったサンプルです。

Java8

java

1import com.google.common.collect.Lists; 2import com.google.common.collect.Streams;

java

1List<Integer> keys = Lists.newArrayList(1, 2, 3, 4); 2List<String> values = Lists.newArrayList("AAA", "BBB", "CCC", "DDD"); 3 4List<Map<Integer,String>> main = Streams.zip( 5 keys.stream(), 6 values.stream(), 7 (k, v) -> new HashMap<Integer,String>(){{ 8 put(k, v); 9 }}) 10 .collect(Collectors.toList());

Javaを勉強し始めたのならば、Scalaの習得も視野に入れて勉強してみてください。Javaと共存が可能なので、今後色々と役に立つはずです。

scala

1val keys = List(1,2,3,4) 2val values = List("aaa", "bbb", "ccc", "ddd") 3val main = keys.zip(values)

投稿2019/12/23 05:05

編集2019/12/24 00:50
so87

総合スコア764

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

d_96a

2019/12/23 05:11

ライブラリーを追加すると、 ここまでコードの読みやすさが変わるものなのですか。。。 これから勉強するといい道標までご丁寧にご教示いただきありがとうございます! この問題の解決にも役に立つということですので、さっそく上記に関して勉強したいと思います。
guest

0

自己解決

key配列の要素分をfor文で回して、valueをその順番にHashMapで充てることで解決できました。

投稿2019/12/23 04:19

d_96a

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問