返回
沈阳市和平区爱尚职业
置顶
招生热线:400-800-2178

学校地址:沈阳市中山路349号

关于Java 对象排序的一些事

49 2018-06-28 09:10:34

学习笔记

  在爱尚沈阳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的目标效果。帮助学员迅速成长,持久腾飞,成就学员“高富帅”人生。


文中图片素材来源网络,如有侵权请联系删除
来源:沈阳市和平区爱尚职业培训机构

免费提供问答解答,帮您轻松解决难题

热门课程 全部课程

热门动态

申请免费试听

只要一个电话

我们为您免费回电

立即申请
刷新
图形验证
关闭
>>
拖动左边滑块完成上方拼图