利用JAVA完成排序

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

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

创建包结构:

创建User类:

 package com.sunyard.bean;

 /**
* <p>
* 用户类,实现Comparable接口,并且在实体类中实现需要排序的逻辑代码
* </p>
* @author:774346810@qq.com
* @date:2017-6-25
*/
public class User implements Comparable<User>{
private String id;//编号
private String name;//姓名
private double salary;//工资
private int age;//年龄
private String city;//城市 public User(){} public User(String id, String name, double salary, int age, String city) {
this.id = id;
this.name = name;
this.salary = salary;
this.age = age;
this.city = city;
} public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
} @Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", salary=" + salary
+ ", age=" + age + ", city=" + city + "]";
}
@Override
public int compareTo(User o) {
int result = ((this.getAge() - o.getAge()) * 10);//按照年龄的降序排序
//int result = ((o.getAge() - this.getAge()) * 10);//按照年龄的升序排序
//int result = o.getName().compareTo(this.getName());//按照英文字典顺序的降序
//int result = this.getName().compareTo(o.getName());//按照英文字典顺序的升序
return result;
} }

创建测试类测试:

 package com.sunyard.test;

 import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import com.sunyard.bean.User; public class Test {
public static void main(String[] args) {
List<User> users = new ArrayList<User>();
User user1 = new User("1", "zhangsan", 10000, 29, "hangzhou");
User user2 = new User("2", "lisi", 12000, 25, "hangzhou");
User user3 = new User("3", "wangwu", 11000, 27, "hangzhou");
User user4 = new User("4", "zhaoliu", 11500, 26, "hangzhou"); users.add(user1);
users.add(user2);
users.add(user3);
users.add(user4); System.out.println("排序前 -------------------- >>>");
for(int i = 0;i < users.size();i++){
System.out.println(users.get(i));
} Collections.sort(users); System.out.println("排序后 -------------------- >>>");
for(int i = 0;i < users.size();i++){
System.out.println(users.get(i));
}
}
}

控制台输出:

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

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

自定义比较器代码:

 package com.sunyard.util;

 import java.util.Comparator;

 import com.sunyard.bean.User;

 /**
* <p>实现自定义比较器</p>
* @author:774346810@qq.com
* @date:2017-6-25
*/
public class UserComparator implements Comparator<User>{ @Override
public int compare(User o1, User o2) {
int result = 0;
result = ((o1.getAge() - o2.getAge()) * 10);//升序
result = ((o2.getAge() - o1.getAge()) * 10);//降序
return result;
} }

测试类:

 package com.sunyard.test;

 import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import com.sunyard.bean.User;
import com.sunyard.util.UserComparator; public class Demo {
public static void main(String[] args) {
List<User> users = new ArrayList<User>();
User user1 = new User("1", "zhangsan", 10000, 29, "hangzhou");
User user2 = new User("2", "lisi", 12000, 25, "hangzhou");
User user3 = new User("3", "wangwu", 11000, 27, "hangzhou");
User user4 = new User("4", "zhaoliu", 11500, 26, "hangzhou"); users.add(user1);
users.add(user2);
users.add(user3);
users.add(user4); System.out.println("排序前 -------------------- >>>");
for(int i = 0;i < users.size();i++){
System.out.println(users.get(i));
} UserComparator comparator = new UserComparator();
Collections.sort(users, comparator); System.out.println("排序后 -------------------- >>>");
for(int i = 0;i < users.size();i++){
System.out.println(users.get(i));
}
}
}

控制台输出:

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

使用JAVA进行排序的更多相关文章

  1. Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...

  2. Java 常用排序算法/程序员必须掌握的 8大排序算法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...

  3. java 集合排序(转)

    Java API针对集合类型排序提供了两种支持:java.util.Collections.sort(java.util.List)java.util.Collections.sort(java.ut ...

  4. java:高速排序算法与冒泡排序算法

     Java:高速排序算法与冒泡算法 首先看下,冒泡排序算法与高速排序算法的效率: 例如以下的是main方法: /**   *  * @Description:  * @author:cuiyaon ...

  5. java常见排序方法

    1.java常用排序方法 1) 选择排序         原理:a. 将数组中的每个元素,与第一个元素比较          如果这个元素小于第一个元素, 就将这个         两个元素交换.   ...

  6. java希尔排序

    java希尔排序 1.基本思想: 希尔排序也成为"缩小增量排序",其基本原理是,现将待排序的数组元素分成多个子序列,使得每个子序列的元素个数相对较少,然后对各个子序列分别进行直接插 ...

  7. Java八大排序算法

    Java八大排序算法: package sort; import java.util.ArrayList; import java.util.Arrays; import java.util.List ...

  8. Java常用排序算法及性能测试集合

    测试报告: Array length: 20000 bubbleSort : 573 ms bubbleSortAdvanced : 596 ms bubbleSortAdvanced2 : 583 ...

  9. java 集合排序

    Java API针对集合类型排序提供了两种支持:java.util.Collections.sort(java.util.List)java.util.Collections.sort(java.ut ...

  10. Java各种排序算法

      Java各种排序算法详解 排序大的分类可以分为两种:内排序和外排序.在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序.下面讲的排序都是属于内排序. 内排序有 ...

随机推荐

  1. Python——如何搭建Python的环境

    最近在学Python,只知道python一般是用来写爬虫的,以前看过一个朋友用Python做的爬虫从妹子图网站上下载图片,觉得很有趣,自己也想学一学. 俗话说,万事开头难,首先第一步就是搭建Pytho ...

  2. MySQL---5、可视化工具Navicat for MySQL安装配置

    一.安装文件包下载 Navicat for MySQL 安装软件和破解补丁: 链接:https://pan.baidu.com/s/1oKcErok_Ijm0CY9UjNMrnA   密码:4xb1 ...

  3. SVG 旋转图形实例

    本实例展示如何在SVG中画出一个正方形并使之旋转.运行结果如下图所示: 在文本框中输入时间间隔,单位是毫秒.点击Start按钮,蓝色方块就会开始转动,每个时间间隔变化一度.变换的角度在下面的Angle ...

  4. Web前端图形滑块检验组件实现

    组件渲染图形: 初始化:                                                                                        ...

  5. 从MySQL到ORM(三):连接、存储过程和用户权限

    一.联结表 数据仍使用前文中的数据. 1.子查询 作为子查询的SELECT语句只能查询单个列.企图检索多个列将返回错误. -- 作为查询条件使用 -- 查看TNT2订单对应的客户ip(order表) ...

  6. CODEFORCES 429B 动态规划

    http://codeforces.com/problemset/problem/429/B 可以参考这篇文章: http://blog.csdn.net/pure_lady/article/deta ...

  7. 并发模型之Master-Worker设计模式

    一.Master-Worker设计模式 Master-Worker模式是常用的并行设计模式.它的核心思想是,系统有两个进程协议工作:Master进程和Worker进程.Master进程负责接收和分配任 ...

  8. Working C# code for MySql5.5 Stored Procedures IN parameters

    MySQL5.5存储过程: #插入一条 涂聚文 DELIMITER $$ DROP PROCEDURE IF EXISTS `geovindu`.`proc_Insert_BookKindList` ...

  9. 基于jQuery日历插件制作日历

    这篇文章主要介绍了基于jQuery日历插件制作日历的相关资料,需要的朋友可以参考下 来看下最终效果图吧: 是长得丑了一点,不要吐槽我-.- 首先来说说这个日历主要的制作逻辑吧: ·一个月份最多有31天 ...

  10. 【Codeforces】Helvetic Coding Contest 2017 online mirror比赛记

    第一次打ACM赛制的团队赛,感觉还行: 好吧主要是切水题: 开场先挑着做五道EASY,他们分给我D题,woc什么玩意,还泊松分布,我连题都读不懂好吗! 果断弃掉了,换了M和J,然后切掉了,看N题: l ...