欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

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

时间:2021-09-07 09:11:33|栏目:JAVA代码|点击:

第一种是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排序(两种方法),希望对大家有所帮助。

上一篇:Java Web Filter 过滤器学习教程(推荐)

栏    目:JAVA代码

下一篇:Spring Security 控制授权的方法

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

本文地址:http://www.codeinn.net/misctech/173363.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有