使用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各种排序算法详解 排序大的分类可以分为两种:内排序和外排序.在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序.下面讲的排序都是属于内排序. 内排序有 ...
随机推荐
- [转]jQuery ListBox Plugin(ListBox插件)
本文转自:http://www.cnblogs.com/think8848/archive/2011/09/28/2193990.html 转载请注明作者(think8848)和出处(http://t ...
- [转]Getting started with ASP.NET Web API OData in 3 simple steps
本文转自:https://blogs.msdn.microsoft.com/webdev/2013/01/29/getting-started-with-asp-net-web-api-odata-i ...
- WINFORM如何实现无聚焦框的Button按钮
当我们将一个button按钮设置如下属性时,总有一个聚焦框来困扰着我们 button1.FlatStyle = FlatStyle.Flat; 我们想要的效果是这样的: 但当使用了Tab切换焦点时 发 ...
- Python——爬虫学习1
爬虫了解一下 网络爬虫(Web crawler),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. Python的安装 本篇教程采用Python3 来写,所以你需要给你的电脑装上Python ...
- table中td 内容超长 自动折行 (含字母数字文字)
<table style="width:100%;table-layout:fixed;"> //列宽由表格宽度和列宽度设定 <thead> <th& ...
- WPF 用户控件嵌入网页
WPF使用用户控件嵌入网页,直接使用WebBrowser或Frame会产生报错,报错信息如下: 1.使用WebBrowser,<WebBrowser Source="http://19 ...
- Rest架构下的增删改查
首先还是要连接一下什么是Rest, REST是英文representational state transfer(表象性状态转变)或者表述性状态转移;Rest是web服务的一种架构风格;使用HTTP, ...
- 15、IO (转换流、缓冲流)
转换流概述 * A: 转换流概述 * a: 转换流概述 * OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字节 * 将字符串按照指定的 ...
- 认识Groovy
什么是groovy: Groovy 是 JVM 的一个替代语言 —替代 是指可以用 Groovy 在 Java 平台上进行 Java 编程,使用方式基本与使用 Java 代码的方式相同. 在编写新应用 ...
- 【转】Eclipse,MyEclipse快捷键及字体设置
1.如何调节Eclipse下console输出字体的大小? 打开window - preferences-- general - appearance - colors and fon ...