欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

用Java集合中的Collections.sort方法如何对list排序(两种方法)

程序员文章站 2024-03-31 19:42:34
第一种是list中的对象实现comparable接口,如下: /** * 根据order对user排序 */ public class user imple...

第一种是list中的对象实现comparable接口,如下:

/**
* 根据order对user排序
*/
public class user implements comparable
   <user>
   {
  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 int compareto(user arg0) {
    return this.getorder().compareto(arg0.getorder());
  }
}
   </user>

测试一下:

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
   <user>
    list = new arraylist
   <user>
    ();
    //此处add user2再add user1
    list.add(user2);
    list.add(user1);
    collections.sort(list);
    for(user u : list){
      system.out.println(u.getname());
    }
  }
}
   </user>
   </user>

输出结果如下

a
b

第二种方法是根据collections.sort重载方法来实现,例如:

/**
* 根据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
   <user>
    list = new arraylist
   <user>
    ();
    list.add(user2);
    list.add(user1);
    collections.sort(list,new comparator
    <user>
    (){
      public int compare(user arg0, user arg1) {
        return arg0.getorder().compareto(arg1.getorder());
      }
    });
    for(user u : list){
      system.out.println(u.getname());
    }
  }
}
    </user>
   </user>
   </user>

输出结果如下

a
b

前者代码结构简单,但是只能根据固定的属性排序,后者灵活,可以临时指定排序项,但是代码不够简洁

多字段的场合:

collections.sort(list,new comparator
   <user>
    (){
      public int compare(user arg0, user arg1) {
 //      第一次比较专业
        int i = arg0.getorder().compareto(arg1.getorder());
//      如果专业相同则进行第二次比较
      if(i==0){
//        第二次比较
        int j=arg0.getxxx().compareto(arg1.getxxx());
//        如果学制相同则返回按年龄排序
        if(j==0){
          return arg0.getccc().compareto(arg1.getccc());
        }
        return j;
      }
      return i;
      }
    });
   </user>

以上内容就是小编给大家介绍有关用java集合中的collections.sort方法如何对list排序(两种方法),希望对大家有所帮助。