Java使用Collections.sort对中文进行排序方式

网友投稿 728 2022-09-16


Java使用Collections.sort对中文进行排序方式

目录使用Collections.sort对中文进行排序Collections.sort 排序 注解

使用Collections.sort对中文进行排序

使用collections.sort(List list, Comparator super T>)对中文名字进行排序

调用Collator的静态方法getInstance来获取所需语言环境

核心代码:

下面展示 核心代码。

result= Collator.getInstance(Locale.CHINA).compare(o1.getName(), o2.getName());

全部代码,里面有对数字的排序方法,

public class Demo03Sort {

public static void main(String[] args) {

ArrayList list01 = new ArrayList<>();

list01.add(1);

list01.add(4);

list01.add(3);

System.out.println(list01);//[1, 4, 3]

Collections.sort(list01, new Comparator

//重写比较的规则

@Override

public int compare(Integer o1, Integer o2) {

//return o2 - o1;//降序排序

return o1 - o2;//升序排序

}

});

System.out.println(list01);//[1, 3, 4]

ArrayList list02 = new ArrayList<>();

list02.add(new Student("萧炎",22));

list02.add(new Student("萧薰",20));

list02.add(new Student("萧玉",24));

list02.add(new Student("阿玉",22));

System.out.println(list02);

//[Student{name='萧炎', age=22}, Student{name='萧薰', age=20}, Student{name='萧玉', age=24}]

Collections.sort(list02, new Comparator() {

@Override

public int compare(Student o1, Student o2) {

//按照年龄升序排序

int result = o1.getAge() - o2.getAge();

//如果两人的年龄相同,在使用姓名的第一个字比较

if(result == 0 ){

//result = o1.getName().charAt(0) - o2.getName().charAt(0);

//按照中文名称排序

result= Collator.getInstance(Locale.CHINA).compare(o1.getName(), o2.getName());

}

return result;

}

});

System.out.println(list02);

//未按照中文排序的结果:[Student{name='萧薰', age=20}, Student{name='萧炎', age=22}, Student{name='阿玉', age=22}, Student{name='萧玉', age=24}]

//按照中文排序的结果:[Student{name='萧薰', age=20}, Student{name='阿玉', age=22}, Student{name='萧炎', age=22}, Student{name='萧玉', age=24}]

}

}

Collections.sort 排序 注解

逆序:

//重写比较的规则

@Override

public int compare(Integer o1, Integer o2) {

//return o2 - o1;//降序排序

return o1 - o2;//升序排序

}

});

System.out.println(list01);//[1, 3, 4]

ArrayList list02 = new ArrayList<>();

list02.add(new Student("萧炎",22));

list02.add(new Student("萧薰",20));

list02.add(new Student("萧玉",24));

list02.add(new Student("阿玉",22));

System.out.println(list02);

//[Student{name='萧炎', age=22}, Student{name='萧薰', age=20}, Student{name='萧玉', age=24}]

Collections.sort(list02, new Comparator() {

@Override

public int compare(Student o1, Student o2) {

//按照年龄升序排序

int result = o1.getAge() - o2.getAge();

//如果两人的年龄相同,在使用姓名的第一个字比较

if(result == 0 ){

//result = o1.getName().charAt(0) - o2.getName().charAt(0);

//按照中文名称排序

result= Collator.getInstance(Locale.CHINA).compare(o1.getName(), o2.getName());

}

return result;

}

});

System.out.println(list02);

//未按照中文排序的结果:[Student{name='萧薰', age=20}, Student{name='萧炎', age=22}, Student{name='阿玉', age=22}, Student{name='萧玉', age=24}]

//按照中文排序的结果:[Student{name='萧薰', age=20}, Student{name='阿玉', age=22}, Student{name='萧炎', age=22}, Student{name='萧玉', age=24}]

}

}

Collections.sort 排序 注解

逆序:


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:路由基础学习笔记之MPLS基本概念(分段路由与MPLS的区别)
下一篇:路由基础学习笔记之OSPF建立和路由策略(ospf路由策略)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~