数组排序(转载)和List类型排序
/** * @Test */ package arrayssort; /** * @author wangjian2 * 创建日期 2012-8-29 * version 1.0 * description 请用一句话描述该类 */ 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.print(arrayToSort[i] + " , "); } // 调用数组的静态排序方法sort Arrays.sort(arrayToSort); System.out.println(); System.out.println(" 排序后: "); for (int i = 0; i < arrayToSort.length; i++) { System.out.print(arrayToSort[i] + " , "); } } /** * 字符型数组排序demo */ public void sortStringArray() { String[] arrayToSort = new String[] {" Oscar ", " Charlie ", " Ryan ", " Adam ", " David ", " aff ", " Aff "}; System.out.println(); System.out.println(" 字符型数组排序,排序前: "); for (int i = 0; i < arrayToSort.length; i++) { System.out.print(arrayToSort[i] + " , "); } System.out.println(); System.out.println(" 排序后: "); // 调用数组的静态排序方法sort Arrays.sort(arrayToSort); for (int i = 0; i < arrayToSort.length; i++) { System.out.print(arrayToSort[i] + " , "); } } /** * 对象数组排序demo */ 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(); System.out.println(" 对象数组排序排序前: "); for (int i = 0; i < dogs.length; i++) { Dog dog = dogs[i]; System.out.print(dog.getName() + " [ " + dog.getWeight() + " ], "); } Arrays.sort(dogs, new ByWeightComparator()); System.out.println(); System.out.println(" 排序后: "); for (int i = 0; i < dogs.length; i++) { Dog dog = dogs[i]; System.out.print(dog.getName() + " [ " + dog.getWeight() + " ], "); } } public static void main(String[] args) { ArraySortDemo t = new ArraySortDemo(); t.sortIntArray(); t.sortStringArray(); t.sortObjectArray(); } /** * 定义了一个Dog类 */ 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; } } /** * 因为要对对象进行排序,所以要实现java.util.Comparator接口的compare(T o1, T o2)方法,在该方法中自定义排序算法。 */ 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; } } }
如果是List类型排序,则用Collections.sort来排序。
能否用快速排序来排序数组?