您的位置:首页 > 编程语言 > Java开发

java.util的Collections类的两种sort方法使用

2013-09-24 10:13 411 查看

在java.util中有Collections类,包含可以操作或返回集合的专用静态类,其中有两类sort方法;

注意:java.util.Arrays中也有用于数组比较的多种sort类

1、第一类sort的API解释:

public static <T extends Comparable<? super T>> void sort(List<T> list)


根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现Comparable 接口。

参数:
list
- 要排序的列表。 用法:list类中的成员类必须实现Comparable接口,Comparable接口的唯一方法compareTo,重写compareTo方法对排序进行说明,
compareTo方法API说明:int compareTo(T o)

比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。
参数:
o
- 要比较的对象。

例子(转载):import java.util.*;

public class Main{

public static void main(String args[]){

ArrayList<Student> al=new ArrayList<Student>();

al.add(new Student(2,"aa"));

al.add(new Student(1,"bb"));

al.add(new Student(3,"dd"));

al.add(new Student(3,"cc"));

Collections.sort(al);

Iterator it=al.iterator();

while(it.hasNext()){

System.out.println(it.next());

}

}

}

class Student implements Comparable{

int id;

String name;

Student(int id,String name){

this.id=id;

this.name=name;

}

public int compareTo(Object o){

Student s=(Student)o;

int result=(id>s.id)?1:((id==s.id)?0:-1);

if(0==result){//String类有compareTo方法,在重写compareTo方法的时候用的比较字符的是String类的compareTo方法。

result=name.compareTo(s.name);

}

return result;

}

public String toString(){

return "id="+this.id+",name="+this.name;

}

}

//主函数直接调用Collections.sort(list);

public class Test{

public static void main(String[] args) {
User user1 = new User();
user1.setName("a");
user1.setOrder(1);
User user2 = new User();
user2.setName("b");
user2.setOrder(2);
List list = new ArrayList();
//此处add user2再add user1
list.add(user2);
list.add(user1);
Collections.sort(list);
for(User u : list){
System.out.println(u.getName());
}
}


2、第二类sort的API解释:

public static <T> void sort(List<T> list, Comparator<? super T> c)    根据指定比较器产生的顺序对指定列表进行排序。

参数:[code]list
- 要排序的列表。
c
- 确定列表顺序的比较器。null 值指示应该使用的元素的自然顺序。例子[/code]
* 根据order对User排序
*/
public class User { //此处无需实现Comparable接口
private String name;
private Integer order;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
}


public class Test{

public static void main(String[] args) {

User user1 = new User();

user1.setName("a");

user1.setOrder(1);

User user2 = new User();

user2.setName("b");

user2.setOrder(2);

List list = new ArrayList();

list.add(user2);

list.add(user1);

Collections.sort(list,new Comparator(){

public int compare(User arg0, User arg1) {//String类有compareTo方法,在重写compareTo方法的时候用的比较字符的是String类的compareTo方法。

return arg0.getOrder().compareTo(arg1.getOrder());

}

});

for(User u : list){

System.out.println(u.getName());

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: