1、对排序对象实现Comparable接口,然后调用Collections.sort(list)
2、实现Comparator接口类cp,调用Collections.sort(list,cp)
java实现
- import java.util.List;
- import java.util.ArrayList;
- import java.util.Locale;
- import java.util.Collections;
- import java.text.Collator;
- public class StringShortWithCollator {
- public static void main(String[] args) {
- List<String> fruits = new ArrayList<String>();
- fruits.add("caffeine");
- fruits.add("café");
- fruits.add("cafeteria");
- Collections.sort(fruits);
- for (int i = 0; i < fruits.size(); i++) {
- String fruit = fruits.get(i);
- System.out.println("orignal sort = " + fruit);
- }
- // 输出
- // orignal sort = cafeteria
- // orignal sort = caffeine
- // orignal sort = café
- // Calendar cal = Calendar.getInstance(); // 使用默认的时区和locale
- // 指定为美国locale
- Collator collator = Collator.getInstance(Locale.US);
- Collections.sort(fruits, collator);
- for (int i = 0; i < fruits.size(); i++) {
- String fruit = fruits.get(i);
- System.out.println("collator sort = " + fruit);
- }
- // 输出
- // collator sort = café
- // collator sort = cafeteria
- // collator sort = caffeine
- // 中文排序
- List<String> chineses = new ArrayList<String>();
- chineses.add("张三");
- chineses.add("李四");
- chineses.add("王五");
- chineses.add("刘六");
- Collections.sort(chineses);
- for (int i = 0; i < chineses.size(); i++) {
- String chinese = chineses.get(i);
- System.out.println("默认中文字符串排序: = " + chinese);
- }
- // 输出:
- // 默认中文字符串排序: = 刘六
- // 默认中文字符串排序: = 张三
- // 默认中文字符串排序: = 李四
- // 默认中文字符串排序: = 王五
- Collator collatorChinese = Collator.getInstance(java.util.Locale.CHINA);
- Collections.sort(chineses, collatorChinese);
- for (int i = 0; i < chineses.size(); i++) {
- String chinese = chineses.get(i);
- System.out.println("以中国语默认顺序来进行中文排序: = " + chinese);
- }
- // 输出:
- // 以中国语默认顺序来进行中文排序: = 李四
- // 以中国语默认顺序来进行中文排序: = 刘六
- // 以中国语默认顺序来进行中文排序: = 王五
- // 以中国语默认顺序来进行中文排序: = 张三
- }
- }