现在我有一个String数组,
String[] a= {"from","a@a.com","to","b@b.com","subject","hello b"};
Run Code Online (Sandbox Code Playgroud)
从命令行参数.
我想将它转换为Map,
{"from":"a@a.com","to":"b@b.com","subject":"hello b"}
Run Code Online (Sandbox Code Playgroud)
在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]);
}
Run Code Online (Sandbox Code Playgroud)
Era*_*ran 11
您可以使用a 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]));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1825 次 |
| 最近记录: |