我爱Guava,并且我会继续使用Guava。但是,在有意义的地方,我尝试使用
Java 8中 的“新内容” 。
“问题”
假设我要在中加入url属性String
。在 番石榴中, 我会这样做:
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);
哪里result
是a=1&b=2&c=3
。
题
在 Java 8中 (没有任何第三方库),最优雅的方法是什么?
您可以获取地图条目集的流,然后将每个条目映射到所需的字符串表示形式,并使用将它们连接到单个字符串中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
直接调用其方法:
String s = attributes.entrySet()
.stream()
.map(Object::toString)
.collect(joining("&"));
问题内容: 我有一个类别hibernate模型: 其中有一个类型字符串字段。我也有一个Java枚举,它表示类别的类型: 我想用它代替字符串类型。SQL在varchar参数中接受两个不同的值:或。我希望Category模型类接受一个枚举变量- 每当hibernate要求它时,都以某种方式将其映射到字符串。 可能吗? 问题答案: 是的,有可能。它应该是:
我有一个类别Hibernate模型: 它们具有类型字符串字段。另外,我还有一个Java枚举,它表示类别的一种类型:
问题内容: 有没有比这更好,更优雅(和/或更快)的方式 …? 编辑 :因为我不能选择两个答案,所以我要使用正则表达式,因为a)很优雅,并且b)说“ Jon Skeet解决了问题”是一种重言式,因为Jon Skeet自己就是所有问题的解决方案。 问题答案: 我不认为Java有任何内置功能可以更快,更可靠地完成此操作,但前提是您稍后希望使用Double.valueOf(或类似功能)对其进行解析。 我会
问题内容: 给出以下无害的小清单: 我的目标是使用以下方法之一以Python方式串联小恶魔: A. plain ol’string函数来完成工作,简短,没有导入 B.lambda,lambda,lambda C.全球化(什么都不做,什么都导入) 请提出其他蟒蛇般的方法来完成这项宏大的任务。 请对解决方案进行排名(python级别),并对解决方案进行评分,并给出简洁的解释。 在这种情况下,最Pyth
问题内容: 当我用Java进行操作时,我在stdout中得到了很好的输出。在不干预标准输出的情况下,如何在变量中获得相同的a字符串表示形式?像什么? 问题答案: 使用。 所有的亦是在此之后是做头套下。地图的格式在中描述。 返回此映射的字符串表示形式。字符串表示形式由键值映射列表组成,这些键值映射由地图视图的迭代器返回,并用大括号(“ {}”)括起来。相邻的映射用字符“,”(逗号和空格)分隔。每个键
问题内容: 我有一个类别休眠模型: 其中有一个类型字符串字段。我也有一个Java枚举,它表示类别的类型: 我想用它代替字符串类型。SQL在varchar参数中接受两个不同的值:或。我希望Category模型类接受一个枚举变量- 并在休眠要求时以某种方式将其映射到字符串。 可能吗? 问题答案: 是的,有可能。它应该是: