Collator类对汉字进行排序
java
import java.text.Collator;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
public static void main(String[] args) {
List<String> stringList = Arrays.asList("李四", "阿毛", "老王", "小李", "小董");
// 使用Collator进行中文排序
stringList.sort((x, y) -> {
Collator instance = Collator.getInstance(Locale.CHINA);
return instance.compare(x, y);
});
// 输出排序结果 阿毛 老王 李四 小董 小李
stringList.forEach(System.out::println);
}stream流实现数字排序和中文排序
java
public static void main(String[] args) {
//测试数据,可以看到顺序是乱的。
List<Student> user = new ArrayList<>();
user.add( new Student(1, "张三","一年级"));
user.add( new Student(4, "李四","三年级"));
user.add( new Student(2, "王五","二年级"));
user.add( new Student(3, "赵六","四年级"));
//按编号升序(默认)
List<Student> collect1 = user.stream().sorted(Comparator.comparingInt(Student::getId)).collect(Collectors.toList());
//遍历输出
System.out.println("编号升序");
collect1.forEach(System.out::println);
System.out.println("===========================================================================");
//按年级升序(默认)
List<Student> collect = user.stream()
.sorted((o1, o2) -> Collator.getInstance(Locale.TRADITIONAL_CHINESE).compare(o1.getGrade(),o2.getGrade())).collect(Collectors.toList());
//遍历输出
System.out.println("中文升序");
collect.forEach(System.out::println);
System.out.println("===========================================================================");
//按编号降序
List<Student> collect2 = user.stream().sorted((o1, o2) -> o2.getId() - o1.getId()).collect(Collectors.toList());
//遍历输出
System.out.println("编号降序");
collect2.forEach(System.out::println);
System.out.println("===========================================================================");
//按年级降序
List<Student> collect3 =
user.stream().sorted((o1, o2) -> Collator.getInstance(Locale.TRADITIONAL_CHINESE).compare(o2.getGrade(),o1.getGrade())).collect(Collectors.toList());
//遍历输出
System.out.println("中文降序");
collect3.forEach(System.out::println);
}