【发布时间】:2015-10-10 22:17:51
【问题描述】:
我想将像long[] l1 = { 1, 2, 3, 4 }; 这样的原始长数组转换为字符串。此字符串应包含这些值中的每一个,并以, 作为分隔符。
我想通过使用 Java 8 的流来实现这一点。我已经让它适用于 Long[] 数组,但由于某种原因,我无法让它适用于原始 long[]。
public static void main(String[] args) {
long[] l1 = { 1, 2, 3, 4 };
Long[] l2 = new Long[4];
l2[0] = new Long(1);
l2[1] = new Long(2);
l2[2] = new Long(3);
l2[3] = new Long(4);
System.out.println(longToString(l2));
}
public static String longToString(Long... l) {
String[] x = Arrays.stream(l).map(String::valueOf).toArray(String[]::new);
String y = Arrays.stream(x).collect(Collectors.joining(","));
return y;
}
我怎样才能使 longToString(long... l) 而不是 longToString(Long... l) 工作?
另外:我是否设法找到了转换它的最佳方式,或者这可以进一步简化吗?我对 Java 8 的流功能还很陌生。
【问题讨论】:
-
看起来并不比
Arrays.toString(l)简单... -
但
Arrays.toString(l)返回格式类似于[1, 2, 3, 4]。注意逗号后面的括号和空格。 OP 可能要求字符串应该看起来像1,2,3,4,在这种情况下Arrays.toString不适合。如果格式无关紧要,那么我同意这将是一个比尝试用流重新发明轮子更好的解决方案:)
标签: java java-8 java-stream