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. ...
随机推荐
- 关于Yaf的一些说明[转Yaf作者]
关于Yaf的一些说明[转Yaf作者] 说明下,这篇文章转至于yaf作者鸟哥的博文,因为最近在系统的学习Yaf框架,发现了这篇文章,感觉对于了解Yaf框架还是很有用处,所以转过来和大家分享一下 Yaf是 ...
- Python中文字符串截取
#-*- coding:utf8 -*- s = u'中文截取' s.decode('utf8')[0:3].encode('utf8') # 结果u'中文截取 延伸阅读: UTF-8中的汉字占用多少 ...
- [ACM_图论] The Perfect Stall 完美的牛栏(匈牙利算法、最大二分匹配)
描述 农夫约翰上个星期刚刚建好了他的新牛棚,他使用了最新的挤奶技术.不幸的是,由于工程问题,每个牛栏都不一样.第一个星期,农夫约翰随便地让奶牛们进入牛栏,但是问题很快地显露出来:每头奶牛都只愿意在她们 ...
- Why we need template on Django ?
Let's create a simple website by django ... step01: django-admin startproject x01 step02: cd x01 ls ...
- paip.解决中文url路径的问题图片文件不能显示
paip.解决中文url路径的问题图片文件不能显示 #现状..中文url路径 图片文件不能显示 <img src="img/QQ截图20140401175433.jpg" w ...
- paip.函数方法回调机制跟java php python c++的实现
paip.函数方法回调机制跟java php python c++的实现 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http:// ...
- SQL Server 添加链接服务器
背景 在SQL SERVER中,如果我们查询数据库需要关联另外一台数据库中表,在这种情况下我们可以通过添加服务器链接来实现. 案列 方式1.sql server 提供了图形化界面,如下: 右键> ...
- Null Object模式
去除代码中的if(obj==null),或者try/catch语句.维持Code的一致性. Null对象,代表"什么也不做"的一个对象. 使Null对象称为一个匿名内部类确保了该类 ...
- Django基础——Model篇(三)
一 Django ORM中的概念 ORM —— 关系对象映射,是Object Relational Mapping的简写,是用来简化数据库操作的框架 Django ORM遵循Code Frist原则, ...
- Liferay7 BPM门户开发之26: 集成Activiti到Liferay7
开发顺序: 实战任务1,开发BPM管理后台(用于在Liferay管理中心管理Activiti模型上传) 一个熟悉Portlet操作的项目,为开发打好基础. http://www.cnblogs.com ...