Java排序数组集合到字符串

标签 java string arraylist

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

对您来说最令人困惑的部分可能是 mapcollect ,让我更详细地解释一下:

  • 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/

相关文章:

java - 初始化数组列表

java - 在 Aspose-Cells 的一个单元格中应用多种样式

java - Web 应用程序内的路径不是直接链接

java - Jackson JSON 解析器无效的 utf-8 起始字节

c# - Scala:Java、C#、Scala 和 C++ 中的高级类、开放类型和通配符泛型

c - 从字符串中取出一个字符并将其转换为c中的int

java - 在 Java 中向 ArrayList 添加和访问元素时出现问题

c - 使用双指针对字符串中的字母进行排序

c++ - 在非常大的文本中搜索多个字符串

java - 在 Java 中使用时间对 ArrayList 进行排序