ArrayList<Integer> factors = new ArrayList<Integer>()
因子 = [1, 183, 3, 61]
;
Collections.sort(factors);
是 => [1, 3, 61, 183]
如何将 [1, 3, 61, 183]
转换为这个 => "1 3 61 183"
最佳答案
而不是使用 Collections.sort(factors)
(或 factors.sort(null)
),您可以使用 Stream
排序然后收集到String
使用Collectors.joining
.
String result = factors.stream() // iterate all the list
.sorted() // make it sorted
.map(Number::toString) // convert Number to String
.collect(Collectors.joining(" ")); // collect them to String
对您来说最令人困惑的部分可能是 map
和collect
,让我更详细地解释一下:
-
map(Number::toString)
与map(n -> n.toString())
相同调用toString
迭代每个元素的方法。其结果来自Stream<String>
在“流”中。 -
collect(..)
占据所有Stream
按原样并使用Collector
从流式元素创建输出。它可能是Map
,List
或任何物体T
- 这取决于Collector
. -
Collectors.joining(" ")
是一个 Collection 家,需要Stream<String>
并将元素与分隔符连接在一起,在我们的例子中,分隔符是一个空格" "
.
关于Java排序数组集合到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53615986/