问题描述
我喜欢,我会继续使用番石榴。但是,在哪里有意义,我尝试使用Java 8中的新东西。
I love Guava, and I'll continue to use Guava a lot. But, where it makes sense, I try to use the "new stuff" in Java 8 instead.
问题
说我想加入一个 String
中的url属性。在 Guava 中,我会这样做:
Lets say I want to join url attributes in a String
. In Guava I would do it like this:
Map<String, String> attributes = new HashMap<>();
attributes.put("a", "1");
attributes.put("b", "2");
attributes.put("c", "3");
// Guava way
String result = Joiner.on("&").withKeyValueSeparator("=").join(attributes);
哪里结果
是 a = 1& b = 2& c = 3
。
问题
在Java 8 (没有任何第三方库)中,最优雅的方式是这样做?
What is the most elegant way to do this in Java 8 (without any 3rd party libraries)?
推荐答案
您可以抓住地图的条目集的流,然后将每个条目映射到所需的字符串表示形式,使用。
You can grab the stream of the map's entry set, then map each entry to the string representation you want, joining them in a single string using Collectors.joining(CharSequence delimiter)
.
import static java.util.stream.Collectors.joining;
String s = attributes.entrySet()
.stream()
.map(e -> e.getKey()+"="+e.getValue())
.collect(joining("&"));
但是由于条目的 toString()
已经输出其格式为 key = value
,您可以直接调用其 toString
方法:
But since the entry's toString()
already output its content in the format key=value
, you can call its toString
method directly:
String s = attributes.entrySet()
.stream()
.map(Object::toString)
.collect(joining("&"));
这篇关于最优雅的方式来加入Java中的一个String 8的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!