Java中使用qsort对类进行排序的操作代码
结论:
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() 方法对数组进行排序,系统会默认将其按照升序排列。
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 +
'}';
}
}
当我们需要对类进行排序应该怎么做呢?
首先我们先定义一个类:
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中如何使用qsort对类进行排序的文章就介绍到这了,更多相关java使用qsort对类排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java定时任务:利用java Timer类实现定时执行任务的功能
本篇文章主要介绍了利用java Timer类实现定时执行任务的功能,具有一定的参考价值,有需要的可以了解一下。2016-11-11
java Arrays.asList 返回什么与普通 ArrayList 区别介
Arrays.asList()返回一个固定大小的List视图,而不是java.util.ArrayList,它不支持add和remove操作,但支持set操作,本文介绍java Arrays.asList返回什么与普通 ArrayList区别,感兴趣的朋友跟随小编一起看看吧2026-01-01
Java线程池execute()和submit()的对比详解
这段文章详细对比了execute()和submit()在Java线程池中的核心区别,包括返回值、异常处理及支持的任务类型,并提供了实战代码示例,关键词:execute()、submit()、线程池提交任务,需要的朋友可以参考下2026-06-06
spring cloud 使用Eureka 进行服务治理方法
这篇文章主要介绍了spring cloud 使用Eureka 进行服务治理方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-05-05


最新评论