zoukankan      html  css  js  c++  java
  • java中Collections.sort() 排序函数的用法

     1 用Collections.sort方法对list排序有两种方法
    2 第一种是list中的对象实现Comparable接口,如下:
    3 /**
    4 * 根据order对User排序
    5 */
    6 public class User implements Comparable<User>{
    7 private String name;
    8 private Integer order;
    9 public String getName() {
    10 return name;
    11 }
    12 public void setName(String name) {
    13 this.name = name;
    14 }
    15 public Integer getOrder() {
    16 return order;
    17 }
    18 public void setOrder(Integer order) {
    19 this.order = order;
    20 }
    21 public int compareTo(User arg0) {
    22 return this.getOrder().compareTo(arg0.getOrder());
    23 }
    24 }
    25 测试一下:
    26 public class Test{
    27
    28 public static void main(String[] args) {
    29 User user1 = new User();
    30 user1.setName("a");
    31 user1.setOrder(1);
    32 User user2 = new User();
    33 user2.setName("b");
    34 user2.setOrder(2);
    35 List<User> list = new ArrayList<User>();
    36 //此处add user2再add user1
    37 list.add(user2);
    38 list.add(user1);
    39 Collections.sort(list);
    40 for(User u : list){
    41 System.out.println(u.getName());
    42 }
    43 }
    44 }
    45 输出结果如下
    46 a
    47 b
    48 第二种方法是根据Collections.sort重载方法来实现,例如:
    49 /**
    50 * 根据order对User排序
    51 */
    52 public class User { //此处无需实现Comparable接口
    53 private String name;
    54 private Integer order;
    55 public String getName() {
    56 return name;
    57 }
    58 public void setName(String name) {
    59 this.name = name;
    60 }
    61 public Integer getOrder() {
    62 return order;
    63 }
    64 public void setOrder(Integer order) {
    65 this.order = order;
    66 }
    67 }
    68
    69 主类中这样写即可:
    70 public class Test{
    71 public static void main(String[] args) {
    72 User user1 = new User();
    73 user1.setName("a");
    74 user1.setOrder(1);
    75 User user2 = new User();
    76 user2.setName("b");
    77 user2.setOrder(2);
    78 List<User> list = new ArrayList<User>();
    79 list.add(user2);
    80 list.add(user1);
    81
    82 Collections.sort(list,new Comparator<User>(){
    83 public int compare(User arg0, User arg1) {
    84 return arg0.getOrder().compareTo(arg1.getOrder());
    85 }
    86 });
    87 for(User u : list){
    88 System.out.println(u.getName());
    89 }
    90 }
    91 }
    92 输出结果如下
    93 a
    94 b
    95 前者代码结构简单,但是只能根据固定的属性排序,后者灵活,可以临时指定排序项,但是代码不够简洁
    96
    97 择优用之。
  • 相关阅读:
    这里有20位程序员关于求职的疑惑,还好也有参考答案
    非科班小白如何逆袭,成功跨考985软件工程?!
    springmvc之RequestMapping中的请求参数和请求头
    springmvc之RequestMapping中的请求方式
    springmvc之RequestMapping注解既可以修饰类也可以修饰方法
    springmvc之第一个springmvc程序
    python之列表推导和生成器表达式
    python之容器序列和扁平序列
    python之利用魔术方法实现自己定义的二维向量
    spring之整合struts2
  • 原文地址:https://www.cnblogs.com/jiayonghua/p/2366726.html
Copyright © 2011-2022 走看看