培训首页  >  培训新闻  >  软件开发新闻  >  关于Java 对象排序的一些事

关于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 对象排序的一些事 原创内容,请点击沈阳软件开发培训

  • 软件开发
  • 软件测试
  • 数据库
  • Web前端
  • 大数据
  • 人工智能
  • 零基础
  • 有HTML基础
  • 有PHP基础
  • 有C语言基础
  • 有JAVA基础
  • 其他计算机语言基础
  • 周末班
  • 全日制白班
  • 随到随学

热门课程

  • 沈阳UED设计工程师培训

    询价

  • 沈阳Python零基础就业培训班

    询价

  • 沈阳爱尚web前端培训课程

    询价

  • 沈阳大数据零基础培训课程

    询价

  • 人工智能技术,电脑技术

    询价