java8转换字符串数组来映射(奇数索引是键,偶数索引是值)

现在我有一个String数组,

String[] a= {"from","a@a.com","to","b@b.com","subject","hello b"};

从命令行参数.

我想将它转换为Map,

{"from":"a@a.com","to":"b@b.com","subject":"hello b"}

在java8中是否存在方便的方式来实现这一点?
现在我的方式是

Map<String,String> map = new HashMap<>();
for (int i = 0; i < args.length; i+=2) {
    String key = args[i].replaceFirst("-+", ""); //-from --> from
    map.put(key, args[i+1]);
}
最佳答案
您可以使用IntStream迭代数组的索引(这是每次处理数组的两个元素所必需的)并使用Collectors.toMap收集器.

IntStream将包含输入数组的每对元素的相应索引.如果数组的长度为奇数,则将忽略最后一个元素.

Map<String,String> map = 
    IntStream.range(0,a.length/2)
             .boxed()
             .collect(Collectors.toMap(i->a[2*i].replaceFirst("-+", ""),
                                       i->a[2*i+1]));

转载注明原文:java8转换字符串数组来映射(奇数索引是键,偶数索引是值) - 代码日志