打印原始数组未排序的数组

时间:2014-03-18 10:48:02

标签: java arrays sorting

我希望打印出我原来的未排序数组,我按顺序打印并排序,但我似乎无法将原始打印出来的未分类。我使用了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:");

    }

6 个答案:

答案 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);