当前位置: 移动技术网 > IT编程>开发语言>Java > 用Java集合中的Collections.sort方法如何对list排序(两种方法)

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

2019年07月22日  | 移动技术网IT编程  | 我要评论
第一种是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排序(两种方法),希望对大家有所帮助。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网