美文网首页
java中如何对对象排序?

java中如何对对象排序?

作者: 在中国喝Java | 来源:发表于2023-01-05 10:09 被阅读0次

前言:

我们知道,在平时做项目的过程中,我们总会用到各种各样的排序,或是升序,或是降序。在java中,要实现排序有好多中方式,比如我们耳熟能详的冒泡排序、选择排序等,但是我们一般都不用写,JDK给我们提供了好多现成方法供我们使用,今天我们就来看看,java中如何使用Comparator进行排序。

1

实现Comparable进行排序

下面我们来看一个简单的例子:

package org.test;

/**

  • 项目名称:BianChengXiGuan
  • 类名称:Student
  • 类描述:学生类
  • 创建人:Mu Xiongxiong
  • 创建时间:2020-10-19 上午8:47:01
  • 修改人:Mu Xiongxiong
  • 修改时间:2020-10-19 上午8:47:01
  • 修改备注:
  • 个人博客:https://blog.csdn.net/qq_34137397
  • 微信公众号:雄雄的小课堂
  • @version

/
public class Student implements Comparable<Student>{
/
*

  • 学生编号
    */
    private int sid;

/**

  • 学生姓名
    */
    private String name;

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
/**

    • 构造函数
    • @discription
    • @author Mu Xiongxiong
    • @created 2020-10-19 上午8:47:43
    • @param sid
    • @param name
    • 个人博客:https://blog.csdn.net/qq_34137397
    • 微信公众号:雄雄的小课堂
      /
      public Student(int sid, String name) {
      super();
      this.sid = sid;
      this.name = name;
      }
      /
      *
    • 构造函数
    • @discription
    • @author Mu Xiongxiong
    • @created 2020-10-19 上午8:47:48
    • 个人博客:https://blog.csdn.net/qq_34137397
    • 微信公众号:雄雄的小课堂
      */
      public Student() {
      super();
      }

//接口中必须要实现的方法
//按照sid进行排序
//如果传过来的sid比本身的sid小的话,返回1,升序
//如果传过来的sid比本身的sid大的话,返回-1,降序
@Override
public int compareTo(Student o) {
if(sid>o.sid){
return 1;
}else if(sid==o.sid){
return 0;
}else{
return -1;
}
}

}
复制代码

这是一个很简单的Student实体类,其中对字段的封装,以及构造方法就不在这里说明了。重点看compareTo方法,此方法是Comparable接口中的方法,我们实现了Comparable接口之后必须要实现该方法。要实现升序和降序,肯定少不了比较,那么compareTo方法的作用就在此,用来比较的!

代码中,compareTo方法中实现的是按照sid进行排序,如果传过来的sid比本身的sid小的话,返回1,升序。如果传过来的sid比本身的sid大的话,返回-1,降序。 然后我们写个测试方法进行测试:

//对集合进行排序
public static void testSortList(){
List<Student> stus = new ArrayList<Student>();
stus.add(new Student(1,"a"));
stus.add(new Student(4,"d"));
stus.add(new Student(5,"e"));
stus.add(new Student(2,"b"));
stus.add(new Student(3,"c"));
System.out.println("排序之前:");
for (Student s : stus) {
System.out.println(s.getSid()+"---"+s.getName());
}
Collections.sort(stus);
//Collections.sort(stus,new SortName());
System.out.println("排序之后:\n");
for (Student s : stus) {
System.out.println(s.getSid()+"---"+s.getName());
}
}
复制代码

运行结果如下:

编辑

这是升序,如果想要降序排序,简单的改一下compareTo方法的比较符号即可。按照sid进行排序,比较简单,那假如现在有这样的需求:按照姓名(字符)顺序降序排序,我们应该怎么实现?

2

实现Comparator进行排序

我们看Collections.sort方法,他还有一个重载方法Collections.sort(Listlists,Comparator c);可以接受一个Comparator实现类,我们就可以利用这一点,实现对name进行排序,代码如下:

package org.test;

import java.util.Comparator;

public class SortName implements Comparator<Student> {

@Override
public int compare(Student o,Student o1) {
return o1.getName().compareTo(o.getName());
}

}
复制代码

接着稍微改一下Collections.sort方法,如下:

Collections.sort(stus,new SortName());
复制代码

运行结果:

编辑

到此,排序完成,最后大家在思考一下,如果name的值为汉字,那么可以按照姓名的首字母倒序排序吗?

相关文章

  • 策略模式

    Java中对List中对象列表某个字段升序排序

  • Java 排序

    概述 ​对Java对数组对象进行排序,Java对排序问题的处理。Java排序一般包括基础排序和Lambda Com...

  • Java 8 中的Comparator 的用法

    Java 8 中的Comparator可以让我们很方便的实现排序的功能用法:对整数的列表升序排序 排序List对象...

  • Java 数组

    Java 实例 - 数组排序及元素查找 以下实例演示了如何使用sort()方法对Java数组进行排序,及如何使用 ...

  • Java 比较器 和 包装类

    Java比较器 背景: 在Java中经常会涉及到多个对象的排序问题,那么就涉及到对象之间的比较 Java中的对象,...

  • java 对List中的对象进行排序

    需求: 对如下List中的数据进行排序,先按照finishLessonCount进行排序,如果finishLess...

  • js中对象数组按对象属性排序

    数组对象要按属性大小排序怎么办? 数组对象属性排序 我们要如何实现数组中的对象按data大小排序? sort方法 ...

  • Java字典序排序

    Java中对List进行字典序排序

  • Java技术文章

    Java String 对 null 对象的巧妙处理 Java static 初始化顺序 简单排序之冒泡、选择、插...

  • Java基础 面向对象入门基础知识 个人学习总结

    类和对象基础知识 1.类和对象的定义 2.如何定义java中的类 3.java对象 1.创建对象:对类进行实例化 ...

网友评论

      本文标题:java中如何对对象排序?

      本文链接:https://www.haomeiwen.com/subject/orzdcdtx.html