What is the best way to combine two lists into a map (Java)?

collections, data-structures, java

Solution

Since the key-value relationship is implicit via the list index, I think the for-loop solution that uses the list index explicitly is actually quite clear - and short as well.

Problem

It would be nice to use `for (String item: list)`, but it will only iterate through one list, and you'd need an explicit iterator for the other list. Or, you could use an explicit iterator for both. Here's an example of the problem, and a solution using an indexed `for` loop instead: ``` import java.util.*; public class ListsToMap { static public void main(String[] args) { List<String> names = Arrays.asList("apple,orange,pear".split(",")); List<String> things = Arrays.asList("123,456,789".split(",")); Map<String,String> map = new LinkedHashMap<String,String>(); // ordered for (int i=0; i<names.size(); i++) { map.put(names.get(i), things.get(i)); // is there a clearer way? } System.out.println(map); } } ``` Output: ``` {apple=123, orange=456, pear=789} ``` Is there a clearer way? Maybe in the collections API somewhere?

Original source