Java 8 String join应该接受Function <e,r>

时间:2016-07-27 20:30:39

标签: java string java-8 api-design

String.join现在只能用于CharSequence元素吗?

将不同集合的元素连接到String会有点困难。

在api支持中添加它会很容易:

public static <E extends Object, R extends CharSequence> String  join(final CharSequence delimiter, Iterable<E> elements, Function<E, R> stringExtractor)

而不是保持相同的api:

public static <E extends Object> String join(final CharSequence  delimiter, Iterable<CharSequence> elements)
{
    return join(delimiter, elements, Function.identity());
}

加入整数我们可以简单地说:

String.join(",", IntStream.range(0, 5).boxed().collect(Collectors.toList()), elem -> elem.toString())

1 个答案:

答案 0 :(得分:2)

您确定自己不想在流媒体结尾处使用Collectors.joining()收藏家吗?

示例代码

List<Integer> numbers = new ArrayList<>();

numbers.add(5);
numbers.add(6);
numbers.add(7);
numbers.add(8);

String value = numbers.stream().map(Object::toString).collect(Collectors.joining("-"));
System.out.println(value); // Outputs 5-6-7-8

工作示例http://ideone.com/C1EGas