首页 > 基础资料 博客日记

再JAVA中如何使用qsort对类进行排序?

2023-09-14 17:52:38基础资料围观212

本篇文章分享再JAVA中如何使用qsort对类进行排序?,对你有帮助的话记得收藏一下,看Java资料网收获更多编程知识

目录

结论: 

解析: 


结论: 

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;
    }
}

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


文章来源:https://blog.csdn.net/2302_76339343/article/details/132429661
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云