[英]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.