3 回答
TA贡献1900条经验 获得超5个赞
请注意,如果您这样做不是为了自学,而是为了在某些生产代码中实际使用它,您可能需要考虑内置Collectors.joining收集器:
String result = numbers.stream()
.map(Object::toString)
// or
// .map(x -> x.toString()) // exactly the same
// or
// .map(String::valueOf) // handles nulls by turning them to the string "null"
.collect(Collectors.joining(","));
它有几个重载,类似于 Scala 的mkString. 不过,此收集器仅接受CharSequences,因此您需要将值显式转换为字符串作为单独的map步骤。
此外,还有一种String.join方法,它也适用于CharSequences 的集合。如果您特别有其中一个(例如List<String>),使用此方法可能更方便,而不是先将集合转换为流:
List<String> strings = ...;
String result = String.join(",", strings);
// vs
String result = strings.stream().collect(Collectors.joining(","))
TA贡献1840条经验 获得超5个赞
如果我没记错我的 java,您可以声明参数类型Collection<?>
以便能够传递任何对象的集合。
至于咬掉分隔符,我认为,只会.substring(1)
做你想做的事。
TA贡献1847条经验 获得超7个赞
你可以这样做:
public static <T> String mkString(Collection<T> c, String sep) { // generic impl return c.stream() .map(String::valueOf) .reduce("", (a, b) -> a + sep + b) .substring(1); // substring implementation to strip leading character}
添加回答
举报