使用JAVA进行排序
利用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进行排序的更多相关文章
- Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法
Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...
- Java 常用排序算法/程序员必须掌握的 8大排序算法
Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...
- java 集合排序(转)
Java API针对集合类型排序提供了两种支持:java.util.Collections.sort(java.util.List)java.util.Collections.sort(java.ut ...
- java:高速排序算法与冒泡排序算法
Java:高速排序算法与冒泡算法 首先看下,冒泡排序算法与高速排序算法的效率: 例如以下的是main方法: /** * * @Description: * @author:cuiyaon ...
- java常见排序方法
1.java常用排序方法 1) 选择排序 原理:a. 将数组中的每个元素,与第一个元素比较 如果这个元素小于第一个元素, 就将这个 两个元素交换. ...
- java希尔排序
java希尔排序 1.基本思想: 希尔排序也成为"缩小增量排序",其基本原理是,现将待排序的数组元素分成多个子序列,使得每个子序列的元素个数相对较少,然后对各个子序列分别进行直接插 ...
- Java八大排序算法
Java八大排序算法: package sort; import java.util.ArrayList; import java.util.Arrays; import java.util.List ...
- Java常用排序算法及性能测试集合
测试报告: Array length: 20000 bubbleSort : 573 ms bubbleSortAdvanced : 596 ms bubbleSortAdvanced2 : 583 ...
- java 集合排序
Java API针对集合类型排序提供了两种支持:java.util.Collections.sort(java.util.List)java.util.Collections.sort(java.ut ...
- Java各种排序算法
Java各种排序算法详解 排序大的分类可以分为两种:内排序和外排序.在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序.下面讲的排序都是属于内排序. 内排序有 ...
随机推荐
- Uboot流程分析
1. uboot的配置分析 1).配置入口分析 首先分析配置: 从make mx6dl_sabresd_android_config可知配置项,搜索Makefile: mx6solo_sabresd_ ...
- Centos7环境下 安装ffmage2.7.1过程
参考http://trac.ffmpeg.org/wiki/CompilationGuide/Centos#FFmpeg 先查看了官方文档,消化以后,开始自己编译ffmage2.7.1,所需要安装包, ...
- mac terminal中快捷移动光标 持续更新。。。
1.option + ←/→ 以单词为单位快速移动 2.ctrl + A 移动到行首 3.ctrl + B 移动到行尾 4.ctrl + K 删除光标后至行尾的内容
- 微信小程序(二)框架的基本组成
安装好 微信web开发者工具后. 让我们来了解一下工具的框架,上图: 工具总共分为三个部分,左上角红框框: 模拟器:模拟手机小程序界面,模拟器左上角可以选择手机型号,右上角红框处,千万别选成Offic ...
- redis中的发布订阅(Pub/Sub)
这里使用nodejs的redis模块说明,具体可见https://www.npmjs.com/package/redis,先来通过一个简单的例子了解下redis中的Pub/Sub具体怎么实现吧.. v ...
- EF面试题
为什么用EF而不用原生的Ado.Net? 1.极大的提高开发效率:EF是微软自己的产品,跟VS拉法集成度比较好,开发中代码都是强类型的, xiefl代码效率非常高,自动化程度非常高,命令式的编程. 2 ...
- code.google.com certificate error: certificate is for www.google.com
有时候我们会碰到下面错误:code.google.com certificate error: certificate is for www.google.com,类似如下: D:\>go ge ...
- js实现栈结构
实现栈结构 //创建栈 function Stack (){ let items = [] this.push = function(element){ items.push(element) } t ...
- BZOJ1103 [POI2007]大都市
Description 在经济全球化浪潮的影响下,习惯于漫步在清晨的乡间小路的邮递员Blue Mary也开始骑着摩托车传递邮件了. 不过,她经常回忆起以前在乡间漫步的情景.昔日,乡下有依次编号为1.. ...
- USACO06DEC Milk Patterns——Solution
题目描述 Farmer John has noticed that the quality of milk given by his cows varies from day to day. On f ...