zoukankan      html  css  js  c++  java
  • 使用JAVA进行排序

    利用JAVA完成排序

      当我们在进行数据库进行查询的时候,当需要按某个字段来进行排序的时候,可以使用SQL语句来完成排序,可以升序,也可以降序。JAVA中的Collections类也可以完成这种操作,SQL的用法和这种集合工具类的操作,可以用于不同的情况中,至于怎么用,可以根据业务场景来选择,下面我罗列出具体的代码,大家可以参考。

     

    1)创建工程名为sort的JAVA工程

    创建包结构:

    创建User类:

     1 package com.sunyard.bean;
     2 
     3 /**
     4  * <p>
     5  *     用户类,实现Comparable接口,并且在实体类中实现需要排序的逻辑代码
     6  * </p>
     7  * @author:774346810@qq.com
     8  * @date:2017-6-25
     9  */
    10 public class User implements Comparable<User>{
    11     private String id;//编号
    12     private String name;//姓名
    13     private double salary;//工资
    14     private int age;//年龄
    15     private String city;//城市
    16     
    17     public User(){}
    18     
    19     public User(String id, String name, double salary, int age, String city) {
    20         this.id = id;
    21         this.name = name;
    22         this.salary = salary;
    23         this.age = age;
    24         this.city = city;
    25     }
    26 
    27     public String getId() {
    28         return id;
    29     }
    30     public void setId(String id) {
    31         this.id = id;
    32     }
    33     public String getName() {
    34         return name;
    35     }
    36     public void setName(String name) {
    37         this.name = name;
    38     }
    39     public double getSalary() {
    40         return salary;
    41     }
    42     public void setSalary(double salary) {
    43         this.salary = salary;
    44     }
    45     public int getAge() {
    46         return age;
    47     }
    48     public void setAge(int age) {
    49         this.age = age;
    50     }
    51     public String getCity() {
    52         return city;
    53     }
    54     public void setCity(String city) {
    55         this.city = city;
    56     }
    57     
    58     @Override
    59     public String toString() {
    60         return "User [id=" + id + ", name=" + name + ", salary=" + salary
    61                 + ", age=" + age + ", city=" + city + "]";
    62     }
    63     @Override
    64     public int compareTo(User o) {
    65         int result = ((this.getAge() - o.getAge()) * 10);//按照年龄的降序排序
    66         //int result = ((o.getAge() - this.getAge()) * 10);//按照年龄的升序排序
    67         //int result = o.getName().compareTo(this.getName());//按照英文字典顺序的降序
    68         //int result = this.getName().compareTo(o.getName());//按照英文字典顺序的升序
    69         return result;
    70     }
    71     
    72 }

    创建测试类测试:

     1 package com.sunyard.test;
     2 
     3 import java.util.ArrayList;
     4 import java.util.Collections;
     5 import java.util.List;
     6 
     7 import com.sunyard.bean.User;
     8 
     9 public class Test {
    10     public static void main(String[] args) {
    11         List<User> users = new ArrayList<User>();
    12         User user1 = new User("1", "zhangsan", 10000, 29, "hangzhou");
    13         User user2 = new User("2", "lisi", 12000, 25, "hangzhou");
    14         User user3 = new User("3", "wangwu", 11000, 27, "hangzhou");
    15         User user4 = new User("4", "zhaoliu", 11500, 26, "hangzhou");
    16         
    17         users.add(user1);
    18         users.add(user2);
    19         users.add(user3);
    20         users.add(user4);
    21         
    22         System.out.println("排序前 -------------------- >>>");
    23         for(int i = 0;i < users.size();i++){
    24             System.out.println(users.get(i));
    25         }
    26         
    27         Collections.sort(users);
    28         
    29         System.out.println("排序后 -------------------- >>>");
    30         for(int i = 0;i < users.size();i++){
    31             System.out.println(users.get(i));
    32         }
    33     }
    34 }

    控制台输出:

     1 排序前 -------------------- >>>
     2 User [id=1, name=zhangsan, salary=10000.0, age=29, city=hangzhou]
     3 User [id=2, name=lisi, salary=12000.0, age=25, city=hangzhou]
     4 User [id=3, name=wangwu, salary=11000.0, age=27, city=hangzhou]
     5 User [id=4, name=zhaoliu, salary=11500.0, age=26, city=hangzhou]
     6 排序后 -------------------- >>>
     7 User [id=2, name=lisi, salary=12000.0, age=25, city=hangzhou]
     8 User [id=4, name=zhaoliu, salary=11500.0, age=26, city=hangzhou]
     9 User [id=3, name=wangwu, salary=11000.0, age=27, city=hangzhou]
    10 User [id=1, name=zhangsan, salary=10000.0, age=29, city=hangzhou]

    第二种方式,实现自定义的比较器:

    自定义比较器代码:

     1 package com.sunyard.util;
     2 
     3 import java.util.Comparator;
     4 
     5 import com.sunyard.bean.User;
     6 
     7 /**
     8  * <p>实现自定义比较器</p>
     9  * @author:774346810@qq.com
    10  * @date:2017-6-25
    11  */
    12 public class UserComparator implements Comparator<User>{
    13     
    14     @Override
    15     public int compare(User o1, User o2) {
    16         int result = 0;
    17         result = ((o1.getAge() - o2.getAge()) * 10);//升序
    18         result = ((o2.getAge() - o1.getAge()) * 10);//降序
    19         return result;
    20     }
    21     
    22 }

    测试类:

     1 package com.sunyard.test;
     2 
     3 import java.util.ArrayList;
     4 import java.util.Collections;
     5 import java.util.List;
     6 
     7 import com.sunyard.bean.User;
     8 import com.sunyard.util.UserComparator;
     9 
    10 public class Demo {
    11     public static void main(String[] args) {
    12         List<User> users = new ArrayList<User>();
    13         User user1 = new User("1", "zhangsan", 10000, 29, "hangzhou");
    14         User user2 = new User("2", "lisi", 12000, 25, "hangzhou");
    15         User user3 = new User("3", "wangwu", 11000, 27, "hangzhou");
    16         User user4 = new User("4", "zhaoliu", 11500, 26, "hangzhou");
    17         
    18         users.add(user1);
    19         users.add(user2);
    20         users.add(user3);
    21         users.add(user4);
    22         
    23         System.out.println("排序前 -------------------- >>>");
    24         for(int i = 0;i < users.size();i++){
    25             System.out.println(users.get(i));
    26         }
    27         
    28         UserComparator comparator = new UserComparator();
    29         Collections.sort(users, comparator);
    30 
    31         System.out.println("排序后 -------------------- >>>");
    32         for(int i = 0;i < users.size();i++){
    33             System.out.println(users.get(i));
    34         }
    35     }
    36 }

    控制台输出:

     1 排序前 -------------------- >>>
     2 User [id=1, name=zhangsan, salary=10000.0, age=29, city=hangzhou]
     3 User [id=2, name=lisi, salary=12000.0, age=25, city=hangzhou]
     4 User [id=3, name=wangwu, salary=11000.0, age=27, city=hangzhou]
     5 User [id=4, name=zhaoliu, salary=11500.0, age=26, city=hangzhou]
     6 排序后 -------------------- >>>
     7 User [id=1, name=zhangsan, salary=10000.0, age=29, city=hangzhou]
     8 User [id=3, name=wangwu, salary=11000.0, age=27, city=hangzhou]
     9 User [id=4, name=zhaoliu, salary=11500.0, age=26, city=hangzhou]
    10 User [id=2, name=lisi, salary=12000.0, age=25, city=hangzhou]
  • 相关阅读:
    oracle正装表达式匹配中文
    oracle利用循环批量检索对应的数据
    oracle不完全恢复
    informatica简易教程
    oracle创建用户的小问题
    宿主机sqlplus连接虚拟机oracle
    ETL采集原表语句生成
    Mac版 MicrosoftOffice2015 办公软件 破解教程
    BetterZip,支持rar等多种压缩解压方式(Xcode自身不能解压rar)
    Xcode --自动注释插件VVDocumenter-Xcode(配置须知)
  • 原文地址:https://www.cnblogs.com/yujiwei/p/7077548.html
Copyright © 2011-2022 走看看