您的位置:首页 > 编程语言 > Java开发

java List 的两个排序方式(附:汉字字典排序方式)

2017-03-13 14:19 323 查看
List 中的ArrayList本身是按照添加顺序排列的,但是有时候想自定义排序方式怎么办呢?
1、List<Record>中的Record 实现 Comparable<Record>接口并复写compareto方法

[java] view
plain copy

 





public class Record implements Comparable<Record> {  

    private String name;  

  

    public String getName() {  

        return name;  

    }  

  

    public void setName(String name) {  

        this.name = name;  

    }  

  

    @Override  

    public int compareTo(Record o) {  

        return name.compareTo(o.name);  

    }  

}  

然后再比较的时候调用实现排序

[java] view
plain copy

 





Collections.sort(list);  

2、第二种方式,通过内部类实现排序

[java] view
plain copy

 





public static void main(String[] args) {  

        List<Record> list = new ArrayList<Record>();  

        Collections.sort(list, new Comparator<Record>() {  

            public int compare(Record o1, Record o2) {  

                return o1.getName().compareTo(o2.getName())  

            };  

        });  

    }  

附:按照汉字的字典序列进行排序

[java] view
plain copy

 





package com.datayes.ecoinfo;  

  

import java.text.Collator;  

import java.util.ArrayList;  

import java.util.Collections;  

import java.util.Comparator;  

import java.util.List;  

  

public class Test {  

    public static void main(String[] args) {  

        List<String> list = new ArrayList<String>();  

        list.add("你");  

        list.add("好");  

        list.add("啊");  

        Collections.sort(list, new Comparator<String>() {  

            @Override  

            public int compare(String o1, String o2) {  

                Comparator<Object> com = Collator.getInstance(java.util.Locale.CHINA);  

                return com.compare(o1, o2);  

  

            }  

        });  

  

        for (String temp : list) {  

            System.out.println(temp);  

        }  

    }  

}  

jdk自带的Collator包涵的汉字太少了,对一些生僻的姓氏不能进行排序。推荐使用:

[java] view
plain copy

 





import com.ibm.icu.text.Collator;  

是ibm开发的针对编码的工具包,非常好用。附pom文件:

[html] view
plain copy

 





<dependency>  

            <groupId>com.ibm.icu</groupId>  

            <artifactId>icu4j</artifactId>  

            <version>57.1</version>  

        </dependency>  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: