我希望打印出我原来的未排序数组,我按顺序打印并排序,但我似乎无法将原始打印出来的未分类。我使用了printRuleAndArray(字符串规则),我也使用了LengthCompare作为新的排序数组,我的问题是原来的!!!
import java.util.*;
import java.util.Arrays;
// Example of how to sort an array
public class Sorting2
{
//declare an array of strings
static String[] nameArray = {"Alan", "Peter", "Ed", "Stephen", "Pheadraa"};
public static void main(String[] args)
{
// sorting by length
Arrays.sort(nameArray, new LengthCompare());
//print out elements of array
System.out.println(Arrays.toString(nameArray));
//count the number of elements in the array
int counter=nameArray.length;
//print out numeric number of elements in array
System.out.println("Number of elements in array: " + counter);
//print out sorted array with shortest first and longest last
printRuleAndArray("Sorted list by name length:");
}
答案 0 :(得分:3)
Arrays.sort()
将始终对您传递给它的数组进行排序,它不会产生新的副本 - 因此,如果您确实需要未排序的数组,那么以及作为排序数组,那么你必须复制它:
String copyArr[] = new String[nameArray.length];
System.arraycopy( nameArray, 0, copyArr, 0, nameArray.length );
但是,这种方法(如果可行的话)最好只是在未排序的数组上执行所需的所有操作(例如打印它或将其转换为字符串),然后对其进行排序。
正如评论中指出的那样,Arrays.copyOf()
也可以用来完成同样的事情。
答案 1 :(得分:1)
Arrays.sort
会更改原始数组。您的选择是在排序之前打印原始数组,或者复制原始数组并对副本进行排序。
答案 2 :(得分:0)
在数组排序之前调用String unsortedArr = Arrays.toString(nameArray);
,当您需要打印未排序的数组时,只需调用System.out.println(unsortedArr);
答案 3 :(得分:0)
Arrays.sort()
对传递给它的数组进行排序。如果您以后想要原始数组,请先复制数组,然后对该数组进行排序。
答案 4 :(得分:0)
for(String arr : nameArray ) { //arr gets successively each value in nameArray.
System.out.println(arr);
}
这个例子正在使用foreach循环
答案 5 :(得分:0)
做这样的事情
String orig = Arrays.toString(nameArray);
Arrays.sort(nameArray, new LengthCompare());
String sorted = Arrays.toString(nameArray);
System.out.println(orig);
System.out.println(sorted);