当前位置: 首页 > 编程笔记 >

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

傅阿苏
2023-03-14
本文向大家介绍用Java集合中的Collections.sort方法如何对list排序(两种方法),包括了用Java集合中的Collections.sort方法如何对list排序(两种方法)的使用技巧和注意事项,需要的朋友参考一下

第一种是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

第二种方法是根据html" target="_blank">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对list集合进行排序Collections.sort(),包括了JAVA对list集合进行排序Collections.sort()的使用技巧和注意事项,需要的朋友参考一下 对一个集合中的对象进行排序,根据对象的某个指标的大小进行升序或降序排序。代码如下: 进行降序排列 进行升序排列 经过测试发现,只需要把两个对象的位置调换一下即可升序或降序。 如果指标相同,根据多个指标进行

  • 本文向大家介绍Java中的2种集合排序方法介绍,包括了Java中的2种集合排序方法介绍的使用技巧和注意事项,需要的朋友参考一下 直接上代码:

  • 本文向大家介绍Java中合并两个集合的方法,包括了Java中合并两个集合的方法的使用技巧和注意事项,需要的朋友参考一下 要在JAVA中合并两个集合,代码如下所示的− 示例 输出结果 名为Demo的类包含名为“set_merge”的函数,该函数使用“addAll”函数合并作为参数传递给函数的两个集。 在main函数中,定义了两个集合,并使用‘addAll’函数将元素添加到其中。 控制台上会打印相关消

  • 问题内容: 我找不到使用此方法的任何示例,所有示例都给出了第二个参数“ null”。我听说此方法用于根据多个标准对类进行排序,但找不到示例。 对于本课程,如果我想根据学生的姓名和年龄对学生列表进行排序,如何使用方法Collections sort(List,Comparator) 问题答案: 在你现有的学生班级的基础上,这通常是我的工作方式,尤其是当我需要多个比较器时。 用法: 编辑 自Java

  • 问题内容: 我认为这是MergeSort,它是O(n log n)。 但是,以下输出不同意: 我正在按顺序号对4个节点的节点列表进行排序,而排序正在进行6个比较。我很困惑,因为6>(4 log(4))。谁可以给我解释一下这个? PS这是mergesort,但我仍然不明白我的结果。 谢谢大家的回答。谢谢汤姆纠正我的数学。 问题答案: O(n log n)并不意味着比较次数将等于或小于n log n,

  • 本文向大家介绍C#数组排序的两种常用方法,包括了C#数组排序的两种常用方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#数组排序的两种常用方法。分享给大家供大家参考。具体如下: 1.第一个例子 定义代码 测试代码 1.第二个例子 定义代码 测试代码 希望本文所述对大家的C#程序设计有所帮助。