java Collections.sort()实现List排序的默认方法和自定义方法
1.java提供的默认list排序方法
主要代码:
List<String> list = new ArrayList();list.add("刘媛媛");
list.add("王硕");
list.add("李明");
list.add("刘迪");
list.add("刘布");
//升序
Collections.sort(list,Collator.getInstance(java.util.Locale.CHINA));//注意:是根据的汉字的拼音的字母排序的,而不是根据汉字一般的排序方法
for(int i=0;i<list.size();i++)
{
System.out.print(list.get(i));
}
System.out.println("");
//降序
Collections.reverse(list);//不指定排序规则时,也是按照字母的来排序的
for(int i=0;i<list.size();i++)
{
System.out.print(list.get(i));
}
输出结果:
李明刘布刘迪刘媛媛王硕
王硕刘媛媛刘迪刘布李明
2.自定义的排序规则:
第一种是model类实现Comparable接口,重写重写int compareTo(Object o)方法
model类:
public class StudentDTO implements Comparable
{
private String name;
private int age;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public ObjType getType()
{
return type;
}
public void setAge(int age)
{
this.age= age;
}
@Override
public int compareTo(Object o)
{
StudentDTO sdto = (StudentDTO)o;
int otherAge = sdto.getAge();
// note: enum-type's comparation depend on types' list order of enum method
// so, if compared property is enum-type ,then its comparationfollow ObjEnum.objType order
return this.age.compareTo(otherAge);
}
}
主方法:
public static void main(String[] args)
{
List<StudentDTO> studentList = new ArrayList();
StudentDTO s1 = new StudentDTO ();
s.setName("yuanyuan");
s.setAge(22);
studentList.add(s1);
StudentDTO s1 = new StudentDTO ();
s.setName("lily");
s.setAge(23);
studentList.add(s2);
Collections.sort(studentList); //按照age升序 22,23,
Collections.reverse(studentList); //按照age降序 23,22
}
第二种是比较器类实现Comparator接口,重写int compare(Object o1, Object o2)方法;
model类:
public class StudentDTO implements Comparable
{
private String name;
private int age;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public ObjType getType()
{
return type;
}
public void setAge(int age)
{
this.age= age;
}
}
比较器类:
class MyCompartor implements Comparator
{
@Override
public int compare(Object o1, Object o2)
{
StudentDTO sdto1= (StudentDTO )o1;
StudentDTO sdto2= (StudentDTO )o2;
return sdto1.getAge.compareTo(stdo2.getAge())
}
}
主方法:
public static void main(String[] args)
{
List<StudentDTO> studentList = new ArrayList();
StudentDTO s1 = new StudentDTO ();
s.setName("yuanyuan");
s.setAge(22);
studentList.add(s1);
StudentDTO s1 = new StudentDTO ();
s.setName("lily");
s.setAge(23);
studentList.add(s2);
MyComparetor mc = new MyComparetor();
Collections.sort(studentList,mc); //按照age升序 22,23,
Collections.reverse(studentList,mc); //按照age降序 23,22
}
附注:
1.对于数组的排序方法如下:
String[] names = {"王林", "杨宝", "李镇", "刘迪", "刘波"};
Arrays.sort(names, com.ibm.icu.text.Collator.getInstance(com.ibm.icu.util.ULocale.SIMPLIFIED_CHINESE));//升序;
System.out.println(Arrays.toString(names));
2.对于汉字的排序:可以尝试使用ICU4J会得到更好的结果,特别是姓为某些生僻字的时候,
用com.ibm.icu.text.Collator替换java.text.Collator,用com.ibm.icu.util.ULocale替换java.util.Locale
3.对于枚举类型的enum1.compareTo(enum2)是按照枚举类型值在定义时的先后顺序比较的,越后面的越大,
而不是按照值的字母先后顺序比较的。
java Collections.sort()实现List排序的默认方法和自定义方法的更多相关文章
- java Collections.sort()实现List排序的默认方法和自定义方法【转】
1.java提供的默认list排序方法 主要代码: List<String> list = new ArrayList();list.add("刘媛媛"); list. ...
- java Collections.sort()实现List排序自定义方法
方法一: package testSimple; import java.util.ArrayList; import java.util.Collections; import java.util. ...
- java Collections.sort()
sort()是Collections中的静态方法,用于对List容器中的元素排序. 如容器list中存储的是Integer对象 List<Integer> list =Arrays.asL ...
- Java Collections.sort方法对list集合排序
1.排序测试类 package com.ljq.test; import java.util.ArrayList; import java.util.Collections; import java. ...
- java List 排序 Collections.sort() 对 List 排序
class User { String name; String age; public User(String name,String age){ this.name=name; this.a ...
- 关于java Collections.sort 排序
public static void main(String[] args) { int[] dd = {12,34,46,123,23,2,35,13,543231,65,5645,57}; Arr ...
- java collection.sort()根据时间排序list
首先:定义bean 然后:定义比较器 最后:测试使用 一.userBean package com.butterfly.Class; public class user { private Strin ...
- Collections.sort 的日期排序
public static void main(String[] args) throws ParseException { // sort降序排列 List<Date> dates = ...
- Collections.sort 给集合排序
List<MenuVo> child_menus = new ArrayList<MenuVo>(); for (MenuVo menuVo : child_menus) { ...
随机推荐
- 图像热点&图像映射
图像映射 图像映射也称为图像热点. 作用: 让同一张图片上的不同区域,可以实现多个不同的超链接功能. 图示: <map>图像映射三步走: 图像映射的实现需要三方面配合完成: 1.图像映射容 ...
- UVaLive6834 Shopping
题意:一条直线上有n个点,标号从1到n,起点为0,终点为N+1,给定m个限制关系(ci,di),访问ci点前必须先访问di点,每两个点之间是单位距离,求在限制条件下,从起点到终点访问完所有的点的最短距 ...
- Linux 配置文件
Linux系统的配置文件,在多用户.多任务环境中,配置文件控制用户权限.系统应用程序.守护进程.服务和其他管理任务.这些任务包括管理用户账号.分配磁盘配额.管理电子邮件和新闻组,以及配置内核参数.以下 ...
- 非常不错的KPTimePicker效果源码
非常不错的KPTimePicker效果源码,实现特殊设计的时间选择器.用户选择时间是通过滑动一个圆环,并且屏幕的颜色会随着时间点的推移变暗或者变亮,喜欢的朋友可以下载研究一下吧. 源码大家可以到源码天 ...
- TCL_事务控制语言
TCL transaction 事务 -- DML 定义为把一连串的操作作为单个逻辑工作单元处理 ----- 例如:银行转账 ...
- 基于MRG_MyISAM引擎的Mysql分表
正常情况下的分表,都是直接创建多个相同结构的表,比如table_1.table_2...最近碰到一个特殊需求,需要创建一个主表,所有分表的数据增删改查,全部自动实时更新到主表,这个时候可以使用MRG_ ...
- Mac OS X安装OpenCV 3.1.0
在我的上一篇文章“”中已经介绍了Linux下OpenCV的安装配置方法,在这里仅仅记录Mac上相对于Linux的一点点差异. 1. 安装依赖包 Mac上安装软件包使用的工具是brew,用此来替代Ubu ...
- Hibernate 老外的完整教程
http://viralpatel.net/blogs/hibernate-many-to-many-annotation-mapping-tutorial/
- Cassandra1.2文档学习(17)—— CQL数据模型(上)
参考文档:http://www.datastax.com/documentation/cql/3.0/webhelp/index.html#cql/ddl/ddl_anatomy_table_c.ht ...
- phpcms v9 自定义伪静态的分页函数
因为.这个页面还没做好..等做好了..再给大家演示...... 调用方法:$page_attr=pages_open($num[0]['cun'],$get_page,$max_page,'http: ...