龙空技术网

关于Java 对象排序的一些事

小菜鸟学Java 86

前言:

眼前各位老铁们对“汉字排序java”大体比较重视,姐妹们都想要知道一些“汉字排序java”的相关文章。那么小编在网络上网罗了一些有关“汉字排序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() {

List<String>list = 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<Student2> {

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;

}

}

尚学堂立志解决中国教育不公平和低效率问题,帮助千千万万被传统教育方式耽误的人,传授实用、前沿的知识,成就学员个人理想,为爱你的人和你爱的人创造美好的生活。尚学堂12大精英团队+各类实战项目,真正实现1+1>10的目标效果。帮助学员迅速成长,持久腾飞,成就学员“高富帅”人生。

标签: #汉字排序java