1 List中的元素没有实现Comparable
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
* list的自定义排序操作
* @author admin
*
*/
public class ListSorting {
/**
*
* @param list
* @return
*/
public static List<String> sortByValue(List<String> list){
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
// TODO Auto-generated method stub
return o1.compareTo(o2);
}
});
return list;
}
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("m");
list.add("a");
list.add("c");
list.add("b");
System.out.println(sortByValue(list));
}
}
2 如果List中的元素实现了Comparable
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* list的自定义排序操作(实体类实现Comparable)
* @author admin
*
*/
class Person implements Comparable<Object>{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person [age=" + age + ", name=" + name + "]";
}
@Override
public int compareTo(Object o) {//参数为其他Person
// TODO Auto-generated method stub
Person p = (Person) o;
if(this.age < p.getAge()) return 1;
else if(this.age == p.getAge()) return 0;
else return -1;
}
}
public class ListSortingInClass {
public static void main(String[] args) {
Person p1 = new Person("111", 11);
Person p2 = new Person("222", 22);
Person p3 = new Person("333", 33);
List<Person> list = new ArrayList<Person>();
list.add(p1);
list.add(p2);
list.add(p3);
Collections.sort(list);//注意,一定要实现Comparable这个抽象类,而不能实现Comparator;
System.out.println(list);
}
}