关于Java 对象排序的一些事
沈阳市和平区爱尚职业培训机构
发表于:2018-06-27 15:38:35在爱尚沈阳java培训学习过程中,很难想象有Java开发人员不曾使用过Collection框架。在Collection框架中,主要使用的类是来自List接口中的ArrayList,以及来自Set接口的HashSet、TreeSet,我们经常处理这些Collections的排序。
在爱尚沈阳java培训学习中,要给数据排序,有两种实现方式,分别实现两个接口:
一种是实现Comparable接口
另一种是实现Comparator接口
在JDK类库中,有一部分类实现了Comparable接口,如Integer Double和String等。
Comparable接口有一个comparTo(Object o)方法,它返回整数类型。对于表达式x.compareTo(y),如果返回值为0,则表示x和y相等,如果返回值大于0,则表示x大于y,如果返回值小于0,则表示x小于y.
通过实现Comparator接口完成中文排序
import java.text.Collator;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class ChineseSortCompare {
@SuppressWarnings("rawtypes")
private final static Comparator CHINA_COMPARE = Collator.getInstance(java.util.Locale.CHINA);
public static void main(String []args) {
sortArray();
sortList();
System.out.println("李四".compareTo("张三"));//前者大于后者,则为正数,否则为负数,相等为0
}
@SuppressWarnings("unchecked")
private static void sortList() {
Listlist = Arrays.asList("张三", "李四", "王五");
Collections.sort(list , CHINA_COMPARE);
for(String str : list) {
System.out.println(str);
}
}
@SuppressWarnings("unchecked")
private static void sortArray() {
String[] arr = {"张三", "李四", "王五"};
Arrays.sort(arr, CHINA_COMPARE);
for(String str : arr) {
System.out.println(str);
}
}
}
可以看到输出的结果都是一样的,当然String本身有compare方法,而且其本身也是实现了Comparable接口的,所以你如果不放入CHINA_COMPARE来进行处理的话,将会默认按照String自己的compareTo来做排序,排序的结果自然不是你想要的,当然英文应该是你想要的。
实现Comparable接口 并重写compareTo方法
/**
* 学生类 方法二 实现Comparable接口 并重写compareTo方法
*
* @author liaot
*
*/
public class Student2 implements Comparable {
private String name; // 姓名
private int age; // 年龄
// 重写 比较方法 本次例子定义为按年龄比较
@Override
public int compareTo(Student2 stu) {
if (this.age > stu.getAge()) {
return 1;
} else {
return -1;
}
}
public Student2(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
爱尚沈阳java培训立志解决中国教育不公平和低效率问题,帮助千千万万被传统教育方式耽误的人,传授实用、前沿的知识,成就学员个人理想,为爱你的人和你爱的人创造美好的生活。爱尚沈阳java培训精英团队+各类实战项目,真正实现1+1>10的目标效果。帮助学员迅速成长,持久腾飞,成就学员“高富帅”人生。
关于Java 对象排序的一些事 原创内容,请点击沈阳软件开发培训
热门课程
-
沈阳UED设计工程师培训
询价
-
沈阳Python零基础就业培训班
询价
-
沈阳爱尚web前端培训课程
询价
-
沈阳大数据零基础培训课程
询价
-
人工智能技术,电脑技术
询价