数组排序Arrays.sort(收集)

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;
	}

}

 

你可能感兴趣的:(java,C++,c,C#,J2SE)