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)是按照枚举类型值在定义时的先后顺序比较的,越后面的越大,
而不是按照值的字母先后顺序比较的。
转自:http://www.cnblogs.com/liuyuanyuanGOGO/p/java_collections.html
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) { ... 
随机推荐
- while else
			count = 0 while count <= 5 : count += 1 if count == 3:pass print("Loop",count) else: pr ... 
- python学习之字符串常用方法和格式化字符串
			Python中的字符串同样适用标准的序列操作(索引,分片,乘法,成员判断,求长度,取最小值和最大值),但因为字符串是不可变的,因此字符串不支持分片赋值. s='http://www.baidu.com ... 
- MVC模型与MTV模型
			MVC模型: MVC(Model View Controller 模型-视图-控制器)是一种Web架构的模式,它把业务逻辑.模型数据.用户界面分离开来,让开发者将数据与表现解耦,前端工程师可以只改页面 ... 
- python基础之socket套接字基础part2
			基于UDP的socket 面向无连接的不可靠数据传输,可以没有服务器端,只不过没有服务器端,发送的数据会被直接丢弃,并不能到达服务器端 1 #客户端 2 import socket 3 ip_port ... 
- 如何激活win10
			第一步:用管理员权限打开命令提示符: 第二步:输入命令---slmgr.vbs /upk (成功卸载了产品密钥) 第三步:slmgr /ipk NPP ... 
- python接口测试(一)——http请求及token获取
			使用python对当前的接口进行简单的测试 1.接口测试是针对软件对外提供服务得接口得输入输出进行得测试,验证接口功能与接口描述文档得一致性 返回结果可以为字符串,json,xml等 2.接口的请求方 ... 
- weblogic中配置自定义filter和servlet
			情景:最近公司产品要接入其它厂商的单点服务器,本来我是在Tomcat上进行测试,使用的是spring boot 的注解方式@webFilter和@webServlet注解写过滤器和servlet类,启 ... 
- python基础训练营03——字典、集合、判断、循环
			一.字典dict: 相比列表list而言,列表list像一本书,如果要查书中的某一个内容,需要把书从前往后翻一遍,直到找到想要获取的东西:而字典dict,就像现实中的字典一样,通过查找特定的字或者词( ... 
- Docker 安装Neo4j
			拉取最新的neo4j镜像 docker pull neo4j 运行Neo4j 容器 docker run -it -d -p 7474:7474 -p 7687:7687 neo4j:latest 打 ... 
- UVa 294 - Divisors  解题报告 c语言实现 素数筛法
			1.题目大意: 输入两个整数L.H其中($1≤L≤H≤10^9,H−L≤10000$),统计[L,H]区间上正约数最多的那个数P(如有多个,取最小值)以及P的正约数的个数D. 2.原理: 对于任意的一 ... 
