地图< S,S>列出< S> [英] Map<S,S> to List<S>
问题描述
我正在尝试使用lambdas将 Map< String,String>
转换为列表< String>
。
I'm trying to convert a Map<String, String>
to a List<String>
using lambdas.
基本上我想用中间的'='
连接键和值。这似乎微不足道,但我找不到怎么做。
Essentially I'd like to concatenate the key and value with an '='
in between. This seems trivial but I can't find how to do it.
例如
Map<String, String> map = new HashMap<>();
map.put("a1","b1");
map.put("a2","b2");
map.put("a3","b3");
// Lambda
// Result contains ["a1=b1", "a2=b2", "a3=b3"]
List<String> result;
推荐答案
对于java 7,你可以在一行中完成也是,从地图#toString()
开始:
For java 7, you can do it in one line too, starting from Map#toString()
:
List<String> list = Arrays.asList(map.toString().replaceAll("^.|.$", "").split(", "));
但它容易受到包含逗号的键/值的影响。
But it is vulnerable to keys/values containing commas.
在java 8中,在条目流上使用 Map.Entry#toString()
:
In java 8, use Map.Entry#toString()
over the entry stream:
List<String> list = map.entrySet().stream().map(Object::toString).collect(Collectors.toList());
不易受逗号攻击。
两种解决方案都使用 Map.Entry#toString()
返回key = value的事实。
Both solutions use the fact that Map.Entry#toString()
returns "key=value".
这篇关于地图< S,S>列出< S>的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!