Java排序数组集合为字符串

时间:2018-12-04 15:13:44

标签: java string arraylist

ArrayList<Integer> factors = new ArrayList<Integer>()

factors = [1, 183, 3, 61];

Collections.sort(factors);是=> [1, 3, 61, 183]

如何将[1, 3, 61, 183]转到此=> "1 3 61 183"

4 个答案:

答案 0 :(得分:1)

您可以使用Collections.sort(factors)进行排序,然后使用Stream将其收集到String,而不是使用Collectors.joining(或factors.sort(null))。

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从流式元素中创建输出。可以是MapList或任何对象T-取决于Collector
  • Collectors.joining(" ")是一个收集器,它需要Stream<String>并将元素与分隔符连接在一起,分隔符在我们的案例" "中是一个空白。

答案 1 :(得分:0)

您可以使用toString的呼叫ArrayList并删除括号,

import java.util.Arrays;
import java.util.List;

public class Test {
    public static void main(String[] args) {
        List<Integer> factors = Arrays.asList(1, 183, 3, 61);
        String arrayString = factors.toString();
        System.out.println(arrayString.substring(1, arrayString.length() - 1).replace(",", ""));
    }
}

答案 2 :(得分:0)

下面的代码示例应完成此任务。我们正在声明一个用于容纳字符串值的新数组(将其设置为与整数数组相同的大小),并填写整数的字符串值。

String myStringArray[] = new String[factors.length];

for (int i = 0; i < factors.length; i++){
    myStringArray[i] = String.valueOf(intArray[i]);
    System.out.println(Arrays.toString(myStringArray));
}//end for

答案 3 :(得分:0)

您可以使用该对象的toString()方法将任何对象直接转换为字符串。 在这里,您可以根据需要操作字符串函数。

将方括号替换为双引号,如下所示

String s = factors.toString();
s=s.replace("[", "\"");
s=s.replace("]", "\"");

,否则您只能使用字符串的子字符串方法删除方括号并使之有用。如下

String s = factors.toString();
s=s.substring(1,s.length()-1);

使用以下方法删除逗号

s=s.replace(",","");

尝试一下,可能会对您有所帮助。