将int数组转换为String数组

dev*_*ife 19 java arrays int list

所以我有这个整体的"清单".这可能是一个Vector,int[],List<Integer>,等等.

我的目标是对整数进行排序并最终得到一个String[].int数组如何在空中开始.

例如:开始于:{5,1,2,11,3} 结束于:String[] = {"1","2","3","5","11"}

反正没有for循环吗?我现在有一个for循环用于收集整数.我宁愿跳过另一个for循环.

Emi*_*mil 21

int[] nums = {5,1,2,11,3}; //List or Vector
Arrays.sort(nums); //Collections.sort() for List,Vector
String a=Arrays.toString(nums); //toString the List or Vector
String ar[]=a.substring(1,a.length()-1).split(", ");
System.out.println(Arrays.toString(ar));
Run Code Online (Sandbox Code Playgroud)

更新:

更短的版本:

int[] nums = {-5,1,2,11,3};
Arrays.sort(nums);
String[] a=Arrays.toString(nums).split("[\\[\\]]")[1].split(", "); 
System.out.println(Arrays.toString(a));  
Run Code Online (Sandbox Code Playgroud)


Sky*_*ave 12

使用StreamJava 8中提供的内容.要获取Stream包含"list"的实例:

  • 对于 int[]
    • IntStream intStream = Arrays.Stream(nums); 要么
    • Stream<Integer> intStream = Arrays.Stream(nums).boxed(); 如果你需要与底层相同的课程.
  • 对于任何具有Collection<Integer>接口的类(例如Vector<Integer>,List<Integer>)
    • Stream<Integer> intStream = nums.stream();

最后,得到一个String[]:

String[] answer = intStream.sorted().mapToObj(String::valueOf).toArray(String[]::new);
Run Code Online (Sandbox Code Playgroud)


Noe*_*l M 8

我可以使用while循环吗?

@Test
public void test() {
    int[] nums = {5,1,2,11,3};

    Arrays.sort(nums);

    String[] stringNums = new String[nums.length];
    int i = 0;
    while (i < nums.length) {
        stringNums[i] = String.valueOf(nums[i++]);
    }

    Assert.assertArrayEquals(new String[]{"1","2","3","5","11"}, stringNums);
}
Run Code Online (Sandbox Code Playgroud)

使用JUnit断言.

对不起,我很轻浮.但是说你不能使用for循环是愚蠢的 - 你必须以某种方式迭代列表.如果您打算调用库方法为您排序(cf Collections.sort()) - 那将以某种方式循环元素.


Col*_*inD 5

使用Guava的简单解决方案:

public List<String> toSortedStrings(List<Integer> ints) {
  Collections.sort(ints);
  return Lists.newArrayList(Iterables.transform(ints, 
      Functions.toStringFunction()));
}
Run Code Online (Sandbox Code Playgroud)

显然,这个解决方案(与其他任何解决方案一样)将在内部使用循环,但它会从您必须阅读的代码中获取它.您还可以ints通过传递结果而不是先使用结果Ordering.natural().sortedCopy(ints)来避免更改顺序.此外,如果您不需要能够将新元素添加到结果列表中,则不需要该部件.transformCollections.sortLists.newArrayList

该方法体的缩短版本,带有静态导入:

return transform(Ordering.natural().sortedCopy(ints), toStringFunction());
Run Code Online (Sandbox Code Playgroud)