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

List 中的ArrayList本身是按照添加顺序排列的,但是有时候想自定义排序方式怎么办呢?

1、List中的Record 实现 Comparable接口并复写compareto方法

public class Record implements Comparable {
    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);
    }
}
然后再比较的时候调用实现排序

Collections.sort(list);


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

public static void main(String[] args) {
        List list = new ArrayList();
        Collections.sort(list, new Comparator() {
            public int compare(Record o1, Record o2) {
                return o1.getName().compareTo(o2.getName())
            };
        });
    }

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

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 list = new ArrayList();
        list.add("你");
        list.add("好");
        list.add("啊");
        Collections.sort(list, new Comparator() {
            @Override
            public int compare(String o1, String o2) {
                Comparator com = Collator.getInstance(java.util.Locale.CHINA);
                return com.compare(o1, o2);

            }
        });

        for (String temp : list) {
            System.out.println(temp);
        }
    }
}
jdk自带的Collator包涵的汉字太少了,对一些生僻的姓氏不能进行排序。推荐使用: 
  
import com.ibm.icu.text.Collator;

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


			com.ibm.icu
			icu4j
			57.1
		



你可能感兴趣的:(java)