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排序的默认方法和自定义方法的更多相关文章

  1. java Collections.sort()实现List排序的默认方法和自定义方法【转】

    1.java提供的默认list排序方法 主要代码: List<String> list = new ArrayList();list.add("刘媛媛"); list. ...

  2. java Collections.sort()实现List排序自定义方法

    方法一: package testSimple; import java.util.ArrayList; import java.util.Collections; import java.util. ...

  3. java Collections.sort()

    sort()是Collections中的静态方法,用于对List容器中的元素排序. 如容器list中存储的是Integer对象 List<Integer> list =Arrays.asL ...

  4. Java Collections.sort方法对list集合排序

    1.排序测试类 package com.ljq.test; import java.util.ArrayList; import java.util.Collections; import java. ...

  5. java List 排序 Collections.sort() 对 List 排序

    class User { String name; String age;  public User(String name,String age){  this.name=name;  this.a ...

  6. 关于java Collections.sort 排序

    public static void main(String[] args) { int[] dd = {12,34,46,123,23,2,35,13,543231,65,5645,57}; Arr ...

  7. java collection.sort()根据时间排序list

    首先:定义bean 然后:定义比较器 最后:测试使用 一.userBean package com.butterfly.Class; public class user { private Strin ...

  8. Collections.sort 的日期排序

    public static void main(String[] args) throws ParseException { // sort降序排列 List<Date> dates = ...

  9. Collections.sort 给集合排序

    List<MenuVo> child_menus = new ArrayList<MenuVo>(); for (MenuVo menuVo : child_menus) { ...

随机推荐

  1. javascript笔记——工作笔记

    1.防止普通用户缓存静态文件,每次修改之后给静态文件的应用后面加上参数后缀[项目文件较多时最好使用前端构建工具] 比如: <script src="$!webPath/resource ...

  2. C++四种强制类型转换关键字

    C语言使用强制类型转换(Type Cast)很简单,不管什么类型的转换,形式都如下: TYPE b = (TYPE)a; c++提供了4种类型转换操作符来应对不同场合的应用. const_cast   ...

  3. [java学习笔记]java语言基础概述之内存的划分&堆和栈

    1.内存的划分 1.寄存器 cpu处理 2.本地方法区 和所在系统相关 3.方法区 方法加载进内存,其实就是开辟了一块该方法的方法区 方法区中还可以有静态区,用于存放静态变量(类变量) 4.栈内存 5 ...

  4. 加密解密以及CA签证

    在当今互联网时代,数据越来越来重要.那么如何加密?解密?以及通过什么方式来认证了?? 接下来,我就会和大家谈谈加密,解密以及CA签证的实现. 首先大家的知道一些加密,解密的基本常识: 互联网上中间人一 ...

  5. java中的synchronized关键字

    参考:http://www.cnblogs.com/devinzhang/archive/2011/12/14/2287675.html 多线程并发问题的根因: 在一个对象中有一个变量i=0,有两个线 ...

  6. 获取客户端访问的ip地址

    function real_ip() { static $realip = NULL; if ($realip !== NULL) { return $realip; } if (isset($_SE ...

  7. js文件内部导入引用js文件方法

    function include(path){      var a=document.createElement("script");     a.type = "te ...

  8. centos install(160112更新)

    centos安装之后: 更新 yum update 新增用户: useradd myuser passwd myuser 添加sudo: usermod -a -G wheel myuser //vi ...

  9. 《Java并发编程实战》读书笔记(更新中)

    一.简介 1.多线程编程要注意的几点: 安全性:永远不发生糟糕的事情 活跃性:某件正确的事情最终会发生(不会发生无限循环或者死锁) 性能:正确的事尽快发生(上下文切换消耗之类的) 二.线程安全 1.为 ...

  10. python中执行javascript代码

    python中执行javascript代码: 1.安装相应的库,我使用的是PyV8 2.import PyV8 ctxt = PyV8.JSContext()     ctxt.enter()     ...