Java基础集锦——利用Collections.sort方法对list排序
要想对List进行排序,可以让实体对象实现Comparable接口,重写compareTo方法即可实现按某一属性排序,但是这种写法很单一,只能按照固定的一个属性排序,没变法变化。通过下面这种方法,可以动态的指定List按照某一个属性进行排序,例子很简单,看代码就明白了。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List; public class testCollection { /**
* @param args
*/
public static void main(String[] args) {
User u1=new User();
u1.setName("Jessica");
u1.setAge(20);
User u2=new User();
u2.setName("Abobo");
u2.setAge(30);
List<User> userList=new ArrayList<User>();
userList.add(u1);
userList.add(u2);
MyComparator sort=new MyComparator();
MyComparator2 sort2=new MyComparator2();
MyComparator3 sort3=new MyComparator3();
MyComparator4 sort4=new MyComparator4();
Collections.sort(userList,sort);
for (User u:userList) {
System.out.println(u.toString()+";I am "+(userList.indexOf(u)+1)+" and I'm ordered by Name desc");
}
Collections.sort(userList,sort2);
for (User u:userList) {
System.out.println(u.toString()+";I am "+(userList.indexOf(u)+1)+" and I'm ordered by Name asc");
}
Collections.sort(userList,sort3);
for (User u:userList) {
System.out.println(u.toString()+";I am "+(userList.indexOf(u)+1)+" and I'm ordered by Age desc");
}
Collections.sort(userList,sort4);
for (User u:userList) {
System.out.println(u.toString()+";I am "+(userList.indexOf(u)+1)+" and I'm ordered by Age asc");
} }
public static class MyComparator implements Comparator<User>{
@Override
public int compare(User o1, User o2) {
return -o1.getName().compareTo(o2.getName());
}
}
public static class MyComparator2 implements Comparator<User>{
@Override
public int compare(User o1, User o2) {
return o1.getName().compareTo(o2.getName());
}
}
public static class MyComparator3 implements Comparator<User>{
@Override
public int compare(User o1, User o2) {
return -o1.getAge().compareTo(o2.getAge());
}
}
public static class MyComparator4 implements Comparator<User>{
@Override
public int compare(User o1, User o2) {
return o1.getAge().compareTo(o2.getAge());
}
}
}
结果:
Hello!My Name is Jessica and I'm 20;I am 1 and I'm ordered by Name desc
Hello!My Name is Abobo and I'm 30;I am 2 and I'm ordered by Name desc
Hello!My Name is Abobo and I'm 30;I am 1 and I'm ordered by Name asc
Hello!My Name is Jessica and I'm 20;I am 2 and I'm ordered by Name asc
Hello!My Name is Abobo and I'm 30;I am 1 and I'm ordered by Age desc
Hello!My Name is Jessica and I'm 20;I am 2 and I'm ordered by Age desc
Hello!My Name is Jessica and I'm 20;I am 1 and I'm ordered by Age asc
Hello!My Name is Abobo and I'm 30;I am 2 and I'm ordered by Age asc
通过这种方法,可以选择为List排序的方式了,打好地基,才能逐渐稳固的长城。
Java基础集锦——利用Collections.sort方法对list排序的更多相关文章
- 用Java集合中的Collections.sort方法对list排序的两种方法
用Collections.sort方法对list排序有两种方法第一种是list中的对象实现Comparable接口,如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
- java中Collections.sort()方法实现集合排序
1.Integer/String泛型的List进行排序 List <Integer> integerlist = new ArrayList<Integer>(); //定 ...
- Java语言利用Collections.sort对Map,List排序
1.main方法包含TreeMap排序1,TreeMap排序2,HashMap排序,List<Integer>排序,List<Bean>排序,List<Map>排序 ...
- Collections.sort方法对list排序的两种方式
Collections.sort( )分为两部分,一部分为排序规则,一部分为排序算法 . 规则用来判断对象,算法则考虑如何进行排序 对于自定义对象,sort()不知道规则,所以无法比较,这种情况下一定 ...
- Java中使用Collections.sort()方法对数字和字符串泛型的LIst进行排序
在List的排序中常用的是Collections.sort()方法,可以对String类型和Integer类型泛型的List集合进行排序. 首先演示sort()方法对Integer类型泛型的List排 ...
- JAVA基础系列:Arrays.sort()
JDK 1.8 java.util.Arrays.class(rt.jar) 1. Collections.sort方法底层就是调用的Arrays.sort方法. 2. Java Arrays中提供 ...
- Java基础关于Map(字典)的方法使用
Java基础关于Map(字典)的方法使用 java中一般用map与hashmap来创建一个key-value对象 使用前提是要导入方法包: import java.util.HashMap: impo ...
- 定制对ArrayList的sort方法的自定义排序
java中的ArrayList需要通过collections类的sort方法来进行排序 如果想自定义排序方式则需要有类来实现Comparator接口并重写compare方法 调用sort方法时将Arr ...
- Java Collections.sort方法对list集合排序
1.排序测试类 package com.ljq.test; import java.util.ArrayList; import java.util.Collections; import java. ...
随机推荐
- sqlplus实现上下翻页设置
环境: 操作系统:red hat 5.8 OS 数据库:oracle 11g 11.2.0.1 安装软件:IO-Tty-1.07.tar. Term-ReadLine-Gnu-1.16.tar.uni ...
- 用SQLSERVER里的bcp命令或者bulkinsert命令也可以把dat文件导入数据表
用SQLSERVER里的bcp命令或者bulkinsert命令也可以把dat文件导入数据表 下面的内容的实验环境我是在SQLSERVER2005上面做的 之前在园子里看到两篇文章<C# 读取纯真 ...
- 深入理解javascript 中的 delete(转)
在这篇文章中作者从<JavaScript面向对象编程指南>一书中关于 delete 的错误讲起,详细讲述了关于 delete 操作的实现, 局限以及在不同浏览器和插件(这里指 firebu ...
- CentOS系统下Hadoop 2.4.1集群安装配置(简易版)
安装配置 1.软件下载 JDK下载:jdk-7u65-linux-i586.tar.gz http://www.oracle.com/technetwork/java/javase/downloads ...
- JS结构
当前页面的JS结构如下: <script> /* 这是立即执行的方法 */ (function () { /* 这是初始化表格 */ var init = fun ...
- JavaScript this 总结(含 ES6)
本文主要总结自<JavaScript 语言精粹>.部分总结自<JavaScript 高级程序设计>以及自己的经验 四种调用模式 在 JavaScript 中,this 的值取决 ...
- Atitit. 提升开发效率与质量DSL ( 3) ----实现DSL的方式总结
Atitit. 提升开发效率与质量DSL ( 3) ----实现DSL的方式总结 1. 管道抽象 1 2. 层次结构抽象(json,xml etc) 1 3. 异步抽象promise 1 4. Ide ...
- hdu4508 完全背包,湫湫系列故事——减肥记I
湫湫系列故事——减肥记I 对于01背包和完全背包,昨晚快睡着的时候,突然就来了灵感 区别:dp[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值 在第二重循环,01 是倒着循环的,因 ...
- PHP学习计划
- 【转】BitKeeper与Linux,git史前琐事
http://www.path8.net/tn/archives/6039 维持数年的BitKeeper与Linux的关系最终还是落入了好莱坞明星婚姻式的结局.他们曾经相得益彰,最后却走到这个遗憾的地 ...