package com.nstc.test;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
* Java提供的List排序方法,是调用了List的父类Collections类中的Sort方法
* Collections.sort()提供两个重载方法:
* Collections.sort(list);(Java提供的默认排序方法)
* Collections.sort(list, Comparator<T>);(可以自定义排序方法)
*
* @author changbl
*
*/
public class TestSort {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("王硕");
list.add("李明");
list.add("刘迪");
list.add("刘布");
//默认排序方法
System.out.println("---------------默认排序方法开始-----------------");
Collections.sort(list);
for(String name : list){
System.out.print(name+"\t");
}
System.out.println();
System.out.println("---------------默认排序方法结束-----------------");
//利用Collator根据语言排序
System.out.println("---------------根据java.util.Locale.ENGLISH排序开始-----------------");
Collections.sort(list,Collator.getInstance(java.util.Locale.ENGLISH));
for(String name : list){
System.out.print(name+"\t");
}
System.out.println();
System.out.println("---------------根据java.util.Locale.CHINA排序开始-----------------");
Collections.sort(list,Collator.getInstance(java.util.Locale.CHINA));
for(String name : list){
System.out.print(name+"\t");
}
System.out.println();
System.out.println("---------------根据java.util.Locale.CHINA排序结束-----------------");
System.out.println();
System.out.println("【暂时告一段落】");
System.out.println();
List<Integer> list2 = new ArrayList<Integer>();
list2.add(5);
list2.add(87);
list2.add(54);
list2.add(290);
Collections.sort(list2, new SequenceRule());
System.out.println("----------------实现自定义排序方法1:----------------");
for(Integer i : list2){
System.out.print(i+"\t");
}
System.out.println();
System.out.println("----------------实现自定义排序方法1结束----------------");
}
}
/**
* 实现自定义排序方法1:
* 实现Comparator接口,重写compare方法
* @author changbl
*
*/
class SequenceRule implements Comparator<Object>{
@Override
public int compare(Object o1, Object o2) {
Integer i1 = (Integer)o1;
Integer i2 = (Integer)o2;
return i1.compareTo(i2);
}
}
/**
* 实现自定义排序方法2:
* 实现Comparable接口,重写compareTo方法
* @author changbl
*
*/
class SequenceRule2 implements Comparable<Object>{
@Override
public int compareTo(Object o) {
return 0;
}
}
对象实现Comparable接口的代码如下:
public class Person implements Comparable<Person> {
private String name;
private Integer order;
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name
* the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the order
*/
public Integer getOrder() {
return order;
}
/**
* @param order
* the order to set
*/
public void setOrder(Integer order) {
this.order = order;
}
@Override
public int compareTo(Person arg0) {
return this.getOrder().compareTo(arg0.getOrder());
}
}
public static void main(String[] args) {
List<Person> listA = new ArrayList<Person>();
Person p1 = new Person();
Person p2 = new Person();
Person p3 = new Person();
p1.setName("name1");
p1.setOrder(1);
p2.setName("name2");
p2.setOrder(2);
p3.setName("name3");
p3.setOrder(3);
listA.add(p2);
listA.add(p1);
listA.add(p3);
Collections.sort(listA);
for (Person p : listA) {
System.out.println(p.getName());
}
}