package com.j2se.sort; import java.text.RuleBasedCollator; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; public class ArraysSort { public static void main(String[] args) { // intArraySortByAsc(); // stringArraySortByAsc(); // stringArraySortByDec(); // chineseArraySort(); sortObjectArray(); } /** * 对整型数组进行升序排序 */ public static void intArraySortByAsc() { int items[] = { 5, 9, 3, 1, 4, 8 }; Arrays.sort(items); for (int item : items) { System.out.println(item); } } /** * 对对象String进行升序排序 */ public static void stringArraySortByAsc() { String items[] = new String[] { "z", "f", "a", "C", "f", "c", "b" }; // Arrays.sort(items); Arrays.sort(items, String.CASE_INSENSITIVE_ORDER);// 忽略大小写 for (String item : items) { System.out.println(item); } } /** * 对对象String进行降序排序 */ public static void stringArraySortByDec() { String items[] = new String[] { "z", "f", "a", "C", "f", "c", "b" }; Arrays.sort(items, Collections.reverseOrder()); // 逆序排序 // 忽略大小写并且逆序 /* * Arrays.sort(items, String.CASE_INSENSITIVE_ORDER); * Collections.reverse(Arrays.asList(items)); */ for (String item : items) { System.out.println(item); } } /** * 中文数组排序 */ public static void chineseArraySort() { Comparator cmp = (RuleBasedCollator) java.text.Collator .getInstance(java.util.Locale.CHINA); String[] array = { "张三", "李四", "王五" }; Arrays.sort(array, cmp); for (String str : array) { System.out.println(str); } } /** * 对象数组排序 */ public static 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() + "],"); } } } /** * 定义了一个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<Object> { 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; } }