在Java中如何对类进行排序详解

 更新时间:2023年08月25日 09:50:12   作者:休息一下…  
这篇文章主要给大家介绍了关于如何在Java中使用Arrays.toString()对类进行排序的相关资料,文中通过代码示例介绍的非常详细,需要的朋友可以参考下

结论: 

import java.util.Arrays;
class Person implements Comparable<Person>{
    public String name;
    public int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
    @Override
    public int compareTo(Person o) {
        return this.age - o.age;
    }
}
public class Main{
    public static void main(String args[]){
        Person[] arr = new Person[3];
        arr[0] = new Person("zhang", 10);
        arr[1] = new Person("wang", 13);
        arr[2] = new Person("li", 11);
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

解析: 

我们知道当我们定义了一个整型数组然后想对其进行排序时就可以使用 Arrays.toString() 方法对数组进行排序,系统会默认将其按照升序排列。

    public static void main(String args[]){
        int[] arr = {2,6,3,0,5,2};
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
    }

当我们需要对类进行排序应该怎么做呢?

首先我们先定义一个类:

class Person{
    public String name;
    public int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

 我们现在有了这个类之后就可以对他进行排序了,此时我们可以先尝试直接对类进行排序操作:

    public static void main(String args[]){
        Person[] arr = new Person[3];
        arr[0] = new Person("zhang", 10);
        arr[1] = new Person("wang", 13);
        arr[2] = new Person("li", 11);
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
    }

 虽然报错了但是我们从报错信息中可以找到这一块代码:

从中我们可以清晰的看到它将我们的代排序类强制类型转换成了 Comparable 而我们的类根本就不能进行强制类型转换成Comparable从而引起了错误。

我们既然已经知道了哪里出现了错误那么改掉之后我们就可以实现使用 Arrays.toString() 方法来排序类。

此时我们先修改我们的类,使其实现 Comparable 接口:

紧接着再类中对 compareTo() 方法进行重写。(假如我们用年龄来排序 compareTo() 方法的返回值为:大于返回大于0的数;小于返回小于零的数;等于返回0)

class Person implements Comparable<Person>{
    public String name;
    public int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
    @Override
    public int compareTo(Person o) {
        return this.age - o.age;
    }
}

运行之后可以看到结果按照年龄升序排序。 

总结

到此这篇关于在Java中如何对类进行排序的文章就介绍到这了,更多相关Java对类排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • springboot如何使用redis的incr创建分布式自增id

    springboot如何使用redis的incr创建分布式自增id

    这篇文章主要介绍了springboot如何使用redis的incr创建分布式自增id,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Java 9中的"菱形"语法详解

    Java 9中的"菱形"语法详解

    Java 9 再次增强了“菱形”语法,它甚至允许在创建匿名内部类时使用菱形语法,Java 可根据上下文来推断匿名内部类中泛型的类型,下面程序示范了在匿名内部类中使用菱形语法,感兴趣的朋友跟随小编一起看看吧
    2023-06-06
  • JDK1.8与JDK17多版本共存相互切换(windows、macOS、Linux、IDE)

    JDK1.8与JDK17多版本共存相互切换(windows、macOS、Linux、IDE)

    在电脑已经安装之前主流的jdk1.8后避免不了要安装新的主流jdk17,本章主要目的是介绍不同项目和场景间切换JDK 1.8和JDK 17,提高开发效率并避免版本冲突(包括windows、macOS、Linux、IDE)
    2025-12-12
  • JAVA 枚举单例模式及源码分析的实例详解

    JAVA 枚举单例模式及源码分析的实例详解

    这篇文章主要介绍了 JAVA 枚举单例模式及源码分析的实例详解的相关资料,需要的朋友可以参考下
    2017-08-08
  • idea插件之mybatis log plugin控制台sql的问题

    idea插件之mybatis log plugin控制台sql的问题

    这篇文章主要介绍了idea插件之mybatis log plugin控制台sql,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • maven多模块项目依赖管理与依赖继承详解

    maven多模块项目依赖管理与依赖继承详解

    这篇文章主要介绍了maven多模块项目依赖管理与依赖继承详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Spring注解中@Configuration和@Component到底有啥区别

    Spring注解中@Configuration和@Component到底有啥区别

    之前一直搞不清@Component和@Configuration这两个注解到底有啥区别,一直认为被这两修饰的类可以被Spring实例化嘛,最近终于弄明白了,这篇文章主要给大家介绍了关于Spring注解中@Configuration和@Component到底有啥区别的相关资料,需要的朋友可以参考下
    2023-04-04
  • Java批量生成节假日值班表Rota的示例详解

    Java批量生成节假日值班表Rota的示例详解

    本文介绍了一个基于2025年1月真实节假日安排的Java值班排班算法的纯内存实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-12-12
  • Spring Security中的 @PreAuthorize 注解使用方法和示例代码

    Spring Security中的 @PreAuthorize 注解使用方法和示例代码

    @PreAuthorize是SpringSecurity中用于方法级权限控制的重要注解,本文详细介绍了@PreAuthorize的使用方法,通过合理使用@PreAuthorize,可以实现细粒度的权限控制,确保应用程序的安全性,感兴趣的朋友跟随小编一起看看吧
    2026-01-01
  • Java HashMap两种简便排序方法解析

    Java HashMap两种简便排序方法解析

    这篇文章主要介绍了Java HashMap两种简便排序方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01

最新评论