內(nèi)蒙古java團(tuán)隊(duì)

          j2se,j2ee開(kāi)發(fā)組
          posts - 139, comments - 212, trackbacks - 0, articles - 65
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          有的時(shí)候需要對(duì)數(shù)組里的element進(jìn)行排序。當(dāng)然可以自己編寫(xiě)合適的排序方法,但既然java包里有自帶的Arrays.sort排序方法,在數(shù)組元素比較少的時(shí)候?yàn)楹尾挥茫?/p>

            Sorting an Array 1. 數(shù)字排序? int[] intArray = new int[] { 4, 1, 3, -23 };

            Arrays.sort(intArray);

            輸出: [-23, 1, 3, 4]

            2. 字符串排序,先大寫(xiě)后小寫(xiě) String[] strArray = new String[] { "z", "a", "C" };

            Arrays.sort(strArray);

            輸出: [C, a, z]

            3. 嚴(yán)格按字母表順序排序,也就是忽略大小寫(xiě)排序 Case-insensitive sort

            Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);

            輸出: [a, C, z]

            4. 反向排序, Reverse-order sort

            Arrays.sort(strArray, Collections.reverseOrder());

            輸出:[z, a, C]

            5. 忽略大小寫(xiě)反向排序 Case-insensitive reverse-order sort

            Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);

            Collections.reverse(Arrays.asList(strArray));

            輸出: [z, C, a]

            java初學(xué)者最常見(jiàn)的錯(cuò)誤思想,就是試圖去寫(xiě)一些方法來(lái)完成數(shù)組的排序功能,其實(shí),數(shù)組排序功能,在java的api里面早已實(shí)現(xiàn),我們沒(méi)有必要去重復(fù)制造輪子。

            Arrays類(lèi)有一個(gè)靜態(tài)方法sort,利用這個(gè)方法我們可以傳入我們要排序的數(shù)組進(jìn)去排序,因?yàn)槲覀儌魅氲氖且粋€(gè)數(shù)組的引用,所以排序完成的結(jié)果也通過(guò)這個(gè)引用的來(lái)更改數(shù)組.對(duì)于整數(shù)、字符串排序,jdk提供了默認(rèn)的實(shí)現(xiàn),如果要對(duì)一個(gè)對(duì)象數(shù)組排序,則要自己實(shí)現(xiàn)java.util.Comparator接口。

            package demo1.client;

            import java.util.Arrays;

            import java.util.Comparator;

            public class ArraySortDemo {

            public void sortIntArray() {

            int[] arrayToSort = new int[] { 48, 5, 89, 80, 81, 23, 45, 16, 2 };

            System.out.println("排序前");

            for (int i = 0; i < arrayToSort.length; i++)

            System.out.println(arrayToSort[i]);

            // 調(diào)用數(shù)組的靜態(tài)排序方法sort

            Arrays.sort(arrayToSort);

            System.out.println("排序后");

            for (int i = 0; i < arrayToSort.length; i++)

            System.out.println(arrayToSort[i]);

            }

            public void sortStringArray() {

            String[] arrayToSort = new String[] { "Oscar", "Charlie", "Ryan",

            "Adam", "David" };

            System.out.println("排序前");

            for (int i = 0; i < arrayToSort.length; i++)

            System.out.println(arrayToSort[i]);

            System.out.println("排序后");

            //調(diào)用數(shù)組的靜態(tài)排序方法sort

            Arrays.sort(arrayToSort);

            for (int i = 0; i < arrayToSort.length; i++)

            System.out.println(arrayToSort[i]);

            }

            public void sortObjectArray() {

            Dog o1 = new Dog("dog1", 1);

            Dog o2 = new Dog("dog2", 4);

            Dog o3 = new Dog("dog3", 5);

            Dog o4 = new Dog("dog4", 2);

            Dog o5 = new Dog("dog5", 3);

            Dog[] dogs = new Dog[] { o1, o2, o3, o4, o5 };

            System.out.println("排序前");

            for (int i = 0; i < dogs.length; i++) {

            Dog dog = dogs[i];

            System.out.println(dog.getName());

            }

            Arrays.sort(dogs, new ByWeightComparator());

            System.out.println("排序后:");

            for (int i = 0; i < dogs.length; i++) {

            Dog dog = dogs[i];

            System.out.println(dog.getName());

            }

            }

            public static void main(String[] args) {

            ArraySortDemo t = new ArraySortDemo();

            t.sortIntArray();

            t.sortStringArray();

            t.sortObjectArray();

            }

            }

            class Dog {

            private String name;

            private int weight;

            public Dog(String name, int weight) {

            this.setName(name);

            this.weight = weight;

            }

            public int getWeight() {

            return weight;

            }

            public void setWeight(int weight) {

            this.weight = weight;

            }

            public void setName(String name) {

            this.name = name;

            }

            public String getName() {

            return name;

            }

            }

            class ByWeightComparator implements Comparator {

            public final int compare(Object pFirst, Object pSecond) {

            int aFirstWeight = ((Dog) pFirst).getWeight();

            int aSecondWeight = ((Dog) pSecond).getWeight();

            int diff = aFirstWeight - aSecondWeight;

            if (diff > 0)

            return 1;

            if (diff < 0)

            return -1;

            else

            return 0;

            }

            }

          主站蜘蛛池模板: 西乌珠穆沁旗| 白城市| 荔波县| 抚松县| 锦州市| 喀喇| 永昌县| 瑞安市| 密云县| 河北区| 崇州市| 新乡市| 河间市| 万宁市| 东乌珠穆沁旗| 天水市| 成武县| 辉南县| 当阳市| 天气| 吉安市| 西安市| 高清| 彭泽县| 工布江达县| 祁东县| 温泉县| 绍兴市| 大英县| 曲麻莱县| 密山市| 祁东县| 双流县| 汉源县| 仁怀市| 长岛县| 阳谷县| 武川县| 伊宁市| 蕲春县| 扎赉特旗|