ループで地道にやればいいレベルの話ではあるのですが、今どきのプログラマならば「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)