地图< S,S>列出< S> [英] Map<S,S> to List<S>

查看:87
本文介绍了地图< S,S>列出< 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".

这篇关于地图&LT; S,S&GT;列出&lt; S&gt;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆