用Java集合中的Collections.sort方法对list排序的两种方法详解编程语言
用Collections.sort方法对list排序有两种方法
第一种是list中的对象实现Comparable接口,如下:
/**
* 根据order对User排序
*/
public class User implements Comparable{
private String name;
private Integer order;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
public int compareTo(User arg0) {
return this.getOrder().compareTo(arg0.getOrder());
}
}
测试一下:
public class Test{
public static void main(String[] args) {
User user1 = new User();
user1.setName( a );
user1.setOrder(1);
User user2 = new User();
user2.setName( b );
user2.setOrder(2);
List list = new ArrayList();
//此处add user2再add user1
list.add(user2);
list.add(user1);
Collections.sort(list);
for(User u : list){
System.out.println(u.getName());
}
}
}
输出结果如下
a
b
第二种方法是根据Collections.sort重载方法来实现,例如:
/**
* 根据order对User排序
*/
public class User { //此处无需实现Comparable接口
private String name;
private Integer order;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
}
主类中这样写即可:
public class Test{
public static void main(String[] args) {
User user1 = new User();
user1.setName( a );
user1.setOrder(1);
User user2 = new User();
user2.setName( b );
user2.setOrder(2);
List list = new ArrayList();
list.add(user2);
list.add(user1);
Collections.sort(list,new Comparator(){
public int compare(User arg0, User arg1) {
return arg0.getOrder().compareTo(arg1.getOrder());
}
});
for(User u : list){
System.out.println(u.getName());
}
}
}
输出结果如下
a
b
前者代码结构简单,但是只能根据固定的属性排序,后者灵活,可以临时指定排序项,但是代码不够简洁
多字段的场合:
Collections.sort(list,new Comparator(){
public int compare(User arg0, User arg1) {
int i = arg0.getOrder().compareTo(arg1.getOrder());
if(i==0){
int j=arg0.getXXX().compareTo(arg1.getXXX());
if(j==0){
return arg0.getCCC().compareTo(arg1.getCCC());
}
return j;
}
return i;
}
});
转载请注明来源网站:blog.ytso.com谢谢!
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/14649.html
cjava相关文章
- java除法保留两位小数_JAVA除法保留小数点后两位的两种方法
- java calendar 设置小时_Java Calendar.set 方法设置时间的问题
- java数组定义长度_JAVA数组的定义
- java单例模式——详解JAVA单例模式及8种实现方式
- java获取服务器路径_JAVA获取服务器路径的方法「建议收藏」
- java获取服务器路径_Java获取此次请求URL以及服务器根路径的方法「建议收藏」
- java 取系统当前时间_java获取当前系统时间方法
- 【说站】java如何重写findClass方法
- java验证手机号正则表达式_Java使用正则表达式验证手机号和电话号码的方法「建议收藏」
- 未检查的转换: 'java.lang.Object' 转换为'java.util.List<Course>' 的解决方法
- java executeupdate_执行完executeUpdate()方法…-体系课
- Java数组循环_java遍历object数组
- java的 clone方法详解编程语言
- Java遍历List集合的三种方法详解编程语言
- Java List.isEmpty()方法:判断集合对象是否为空
- Java Statement.addBath()方法:添加批处理语句
- Hibernate Query接口 list方法:返回查询结果的List集合
- 字符实现Redis Java过期字符的简单方法(redisjava过期)
- 时间解决Redis中Java设置过期时间的方法(redisjava过期)
- Java程序如何在Linux上顺利部署?快来了解一下!(java部署到Linux)
- Java应用在Linux上乱码的原因及解决方法(java linux乱码)
- Java解答Oracle使用更轻松的实现方式(oracle写成java)
- JAVA中终止线程的方法介绍
- Java输入流Scanner/BufferedReader使用方法示例
- java从list中取出对象并获得其属性值的方法
- Java实现JSP在Servelt中连接Oracle数据库的方法