簡體   English   中英

打印原始數組未排序的數組

[英]To print original array not sorted array

我想打印出原始的未排序數組,我將其按順序打印並排序,但是我似乎無法得到原始的未排序數組。 我用過printRuleAndArray(String rule),我也用過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:");

    }

Arrays.sort()將始終對傳遞給它的數組進行排序,它不會產生新的副本-因此,如果您確實需要將未排序的數組以及已排序的數組掛起,則必須制作一個副本:

String copyArr[] = new String[nameArray.length];
System.arraycopy( nameArray, 0, copyArr, 0, nameArray.length );

但是,比這種方法(如果可行)更可取的是僅對未排序的數組執行所需的所有操作(例如打印或將其轉換為字符串),然后再對其進行排序。

正如評論中指出的那樣, Arrays.copyOf()也可以用於完成相同的操作。

Arrays.sort將更改您的原始數組。 您的選擇是在對原始數組進行排序之前先對其進行打印,或者對原始數組進行復制並對副本進行排序。

調用String unsortedArr = Arrays.toString(nameArray); 在數組排序之前,以及當您需要打印未排序的數組時,只需調用System.out.println(unsortedArr);

Arrays.sort()對傳遞給它的數組進行排序。 如果以后需要原始數組,請先復制該數組,然后對該數組進行排序。

 for(String arr : nameArray ) {  //arr gets successively each value in nameArray.
System.out.println(arr);
}

這個例子使用的是foreach循環

做這樣的事情

    String orig = Arrays.toString(nameArray);
    Arrays.sort(nameArray, new LengthCompare());
    String sorted = Arrays.toString(nameArray);

    System.out.println(orig);
    System.out.println(sorted);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM