Java:針對Array中的值作排序

上兩篇針對陣列與字串轉換、陣列移除重複項目作了介紹,
有興趣可以先參考:
  1. Java:陣列與字串轉換,Array to String 和 String to Array
  2. Java:移除陣列Array中重複的值

這篇則是要介紹如何對陣例中的值或字串作排序,
排序的方法有很多種,
好奇的話可以參考許久以前的文章,Sorting Algorithms:排序演算法
當中有一段 youtube 上的影片,詳細地介紹了各種排序方法。

下面的程式碼除了介紹把陣列中的項目作排序外,
也同場加映利用 TreeSet 同時將陣列作排序及移除重複項目。
適度地利用 Java 內建的資料結構,可以省下超多工喔!

 1 package werdna1222coldcodes.blogspot.com.demo.array;
 2 
 3 import java.text.ParseException;
 4 import java.util.Arrays;
 5 import java.util.Set;
 6 import java.util.TreeSet;
 7 
 8 public class ArraySortDemo {
 9 
10     public static void main(String[] args) throws ParseException {
11 
12         // 建立有重複項目之 int array
13         int intArray[] = { 4, 2, 5, 1, 5, 2, 4, 3 };
14 
15         // 利用 Arrays.sort 來排序
16         // 輸出結果:[1, 2, 2, 3, 4, 4, 5, 5]
17         arraySort(intArray);
18 
19         // 使用 
20         TreeSet,同時達成排序和移除重複項目的需求。
21         // 輸出結果:[1, 2, 3, 4, 5]
22         treeSetSort(intArray);
23     }
24 
25     static void arraySort(int[] array) {
26 
27         Arrays.sort(array);
28         String arrayString = Arrays.toString(array);
29         System.out.println(arrayString);
30     }
31 
32     static void treeSetSort(int[] duplicateArray) {
33 
34         Set<Integer> intSet = new TreeSet<Integer>();
35         for (int element : duplicateArray) {
36             intSet.add(element);
37         }
38 
39         int nonDuplicateAndSortedArray[] = new int[intSet.size()];
40 
41         Object[] tempArray = intSet.toArray();
42 
43         for (int i = 0; i < tempArray.length; i++) {
44             nonDuplicateAndSortedArray[i] = (Integer) tempArray[i];
45         }
46 
47         String arrayString = Arrays.toString(
48                              nonDuplicateAndSortedArray);
49         System.out.println(arrayString);
50     }
51 }

更多關於 Java 的教學及程式範例,請見:
Java 教學及程式範例大全

關鍵字:Java, array, string, 陣列, 字串, 值, 排序,

這個網誌中的熱門文章

【銀行代碼查詢】3碼銀行代碼列表、7碼分行代碼查詢

【博客來折價券】25/50/100/150現領現折+天天簽到換200+OP兩倍換!

【博客來折價券】博客來免費序號e-coupon分享(持續更新)

Gmail 無限分身術:產生無限 email 帳號

【新光卡攻略】台灣Pay單筆888送50+寰宇3%,LINE會員繳費10%!