Java 将2个集合转换为地图

Java 将2个集合转换为地图,java,dictionary,lambda,java-8,java-stream,Java,Dictionary,Lambda,Java 8,Java Stream,我有两个同样大小的Lists作为List a和List b 在Java 8中使用lambdas或其他工具创建Map的最有效方法是什么,其中List a是键,List b是值 Java 7方式如下所示: Map<String, String> map = new HashMap<String, String>(); for(int i=0;i<a.size();i++) map.put(a.get(i), b.get(i)); Map Map=newhash

我有两个同样大小的
List
s作为
List a
List b

在Java 8中使用lambdas或其他工具创建
Map
的最有效方法是什么,其中
List a
是键,
List b
是值

Java 7方式如下所示:

Map<String, String> map = new HashMap<String, String>();
for(int i=0;i<a.size();i++)
    map.put(a.get(i), b.get(i));
Map Map=newhashmap();

对于(int i=0;i,因为
上没有
zip
操作(也没有
类),一个简单的解决方案是使用
IntStream
并循环每个
列表
的索引

Map<String, String> map =
    IntStream.range(0, a.size()).boxed().collect(Collectors.toMap(a::get, b::get));

或者没有装箱开销,但不那么简洁:
IntStream.range(0,a.size()).collect(HashMap::new,(m,i)->m.put(a.get(i),b.get(i)),Map::putAll)
Map<String, String> map = EntryStream.zip(a, b).toMap();