使用 Arrays.sort() 按升序或降序對陣列進行排序
來源:
FreeCodeCamp 透過這篇文章,您將學習如何在 Java 中按升序或降序對陣列進行排序。
在Java中,我們使用陣列將一組變數(具有相同資料類型)儲存在單一變數中。但有時數組中儲存的值會以隨機順序出現。
感謝 Java 中的Arrays類,我們有多種方法來操作數組,包括對數組進行排序。
我們將使用Arrays類別中的方法之一是
sort()方法,該方法按升序對陣列進行排序。若要依降序對陣列進行排序,請使用Java中
Collections類別的
reverseOrder()方法。
如何使用 Arrays.sort() 在 Java 中對陣列進行升序排序
以下是我們如何使用sort()方法對陣列進行升序排序 的範例。
import java.util.Arrays;
class ArraySort {
public static void main(String[] args) {
int[] arr = { 5, 2, 1, 8, 10 };
Arrays.sort(arr);
for (int values : arr) {
System.out.print(values + ", ");
}
}
}
在上面的範例中,我們做的第一件事是導入
Arrays類別:
import java.util.Arrays; 。
這使我們可以存取Arrays類別的所有方法。然後我們建立了一個包含隨機順序的數字的陣列:
int[] arr = { 5, 2, 1, 8, 10 }; 。為了按升序對此數組進行排序,我們將數組作為參數傳遞給
sort()方法:
Arrays.sort(arr); 。請注意,在使用點表示法存取
sort()方法之前,先編寫
Arrays類別。最後,我們建立了一個循環並將陣列列印到控制台。結果是一個排序數組:
1, 2, 5, 8, 10。現在我們來討論一下按降序對數組進行排序。
如何使用 Collections.reverseOrder() 在 Java 中對陣列進行降序排序
要按降序對陣列進行排序,您應該使用
reverseOrder() ,它可以從Collections類別存取。我們仍然會使用
Arrays.sort(); ,但在本例中它將採用兩個參數 - 一個要排序的陣列和
Collections.reverseOrder()。
import java.util.Arrays;
import java.util.Collections;
class ArraySort {
public static void main(String[] args) {
Integer[] arr = { 5, 2, 1, 8, 10 };
Arrays.sort(arr, Collections.reverseOrder());
for (int values : arr) {
System.out.print(values + ", ");
}
}
}
我們做的第一件事是導入
Arrays和
Collections類,因為我們將使用這些類別提供的方法。接著我們以隨機順序建立一個數字陣列:
Integer[] arr = { 5, 2, 1, 8, 10 }; 。如您所看到的,我們使用
Integer[]而不是前面範例中的
int[] 。否則會出現錯誤。為了按降序對陣列進行排序,我們這樣做了:
Arrays.sort(arr, Collections.reverseOrder()); 。第一個參數是一個陣列
arr,它將按升序排序。第二個參數
Collections.reverseOrder()將反轉已排序數組的順序,使其按降序排列。循環並列印時,陣列將如下所示:
10, 8, 5, 2, 1。
結論
在本文中,我們討論了 Java 中的陣列排序 - 如何按升序或降序對它們進行排序。為此,我們可以使用
sort()方法,該方法可以從Arrays類別存取。
sort()方法採用一個要排序的陣列作為參數。為了按降序對陣列進行排序,我們使用了Collections 類別提供的
reverseOrder()方法。它作為第二個參數傳遞給
sort()方法,以便排序後的陣列可以按降序重新排序。
Java 集合。List 和 Set 介面有什麼差別?
來源:
Rrtutors List 和 Set 是擴充
Collection介面的 Java 介面。在這篇文章中,我們將了解兩者之間的主要差異以及如何使用它們。
Java中Set和List介面的差別
讓我們根據以下關鍵參數來 定義
List和
Set介面之間的主要差異:
執行
List實作
ArrayLists,而
HashSet實作
Set。
索引
您可以使用
ListIterator在List中向前和向後移動,但不能在
Set中移動。請改用 Iterator (它適用於
List和
Set)。
命令
Set介面不支援任何特定的設定順序。
Set類型的集合已經依照自己的規則排序了,不能這樣排序。
列表是一個有序列表。物件按照新增到清單中的順序儲存。列表元素透過索引存取。
空對象
List沒有任何限制,支援新增Null值,而
Set最多允許新增一個Null值。
重複項
List可以包含重複項,但
Set不能。Set 不允許重複元素,因為它的所有元素都必須是唯一的。如果重複元素插入
Set中,現有值將會被覆寫。
什麼時候應該使用 List 和 Set?
當您只需要儲存唯一值時, Set是最佳選擇,因為這就是它的設計目的。但如果你想在重複的情況下保留插入順序,
List是最好的選擇。
範例集
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class ListExample {
public static void main(String[] args) {
List<String> al = new ArrayList<String>();
al.add("Rohit");
al.add("Panjab");
al.add("Kamir");
System.out.println("My ArrayList Items: ");
System.out.print(al);
List<String> ll = new LinkedList<String>();
ll.add("Shobit");
ll.add("Raul");
ll.add("Ketel");
System.out.println("\n My LinkedList Items: ");
System.out.print(ll);
}
}
範例列表
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
public class SetExample {
public static void main(String[] args) {
int myList[] = {60, 70, 80, 40 };
Set<Integer> dispSet = new HashSet<Integer>();
try{
for(int i = 0; i<4; i++){
dispSet.add(myList[i]);
}
System.out.println(dispSet);
TreeSet<Integer> treeset = new TreeSet<Integer>(dispSet);
System.out.println("Sorting in Asceding order:");
System.out.println(treeset);
}
catch(Exception e){
e.printStackTrace();
}
}
}
GO TO FULL VERSION