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());
}
}
}
相关文章推荐
- java.util 下的Class Collections的两种sort方法使用
- Java中使用Collections.sort()方法对数字和字符串泛型的LIst进行排序
- java.util.Scanner使用方法
- 用Java集合中的Collections.sort方法对list排序的两种方法
- JAVA 使用eclipse导入jar包的两种方法
- Java反射的两种使用方法(推荐)
- java基础——collections.sort()排序方法使用方法
- 用Java集合中的Collections.sort方法对list排序的两种方法
- java.util.Arrays.sort方法简单分析
- java使用JexcelApi和POI两种方法操作excel
- 用Collections.sort方法对list排序有两种方法 第一种是list中的对象实现Comparable接口,如下: [java] view plain copy /** * 根据ord
- java中一个类要当作线程来使用有两种方法
- Java排序方法sort的使用详解
- java_Eclipse中SVN的安装步骤(两种)和使用方法
- 两种使用weblogic连接池的方法:JAVA应用程序
- JAVA实现多线程的两种方法,及如何使用
- Java压缩文件工具类ZipUtil使用方法代码示例
- Java 并发工具包 java.util.concurrent 使用方法
- JAVA中Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序
- java.util.Queue使用方法