java中将两个列表合并到一个映射的最佳方法?

Chr*_*ris 3 java list data-structures

可能重复:
将两个列表组合成一个映射(Java)的最简单方法?

鉴于这种:

    List<Integer> integers = new ArrayList<Integer>();
    List<String> strings = new ArrayList<String>();

    strings.add("One");
    strings.add("Two");
    strings.add("Three");

    integers.add(new Integer(1));
    integers.add(new Integer(2));
    integers.add(new Integer(3));
Run Code Online (Sandbox Code Playgroud)

将这些列表合并到地图中的最佳方法是什么,如["One"=> 1,"Two"=> 2,"Three"=> 3]?

谢谢你的任何建议

And*_*s_D 12

假设两个列表的长度相等,并且键和值在两个列表中都具有相同的索引,那么这是一种简单的方法:

for (int i = 0; i < strings.size(); i++) {
  map.put(strings.get(i), integers.get(i));
}
Run Code Online (Sandbox Code Playgroud)


小智 5

在Scala的土地上,我们把它写成:

integers.zip(strings).toMap
Run Code Online (Sandbox Code Playgroud)

:-P


mis*_*tor 5

只要List您使用的实现具有有效的get方法,Andreas或Mikera建议的代码就可以了.可能存在索引访问相当昂贵的情况(例如,LinkedList).

这就是为什么一般来说,你应该更喜欢这些程序的迭代器.

码:

Iterator<String> stringsItr = strings.iterator();
Iterator<Integer> integersItr = integers.iterator();
Map<String, Integer> map = new HashMap<String, Integer>();
while(stringsItr.hasNext() && integers.hasNext()) {
  map.put(stringsItr.next(), integers.next());
}
Run Code Online (Sandbox Code Playgroud)