标签:pack can 说明 dem .com 集合排序 自动 nts 排序
1、Student类package cn.sjq.sort.java;
/**
* 通过实现Java的Comparable<T>接口来对Student对象进行排序
* 此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序,类的 compareTo 方法被称为它的自然比较方法
* 实现此接口的对象列表(和数组)可以通过 Collections.sort(和 Arrays.sort)进行自动排序。实现此接口的对象可以用作有序映射表中的键或有序集合中的元素,无需指定比较器。
* @author songjq
*
*/
public class Student1 implements Comparable<Student1> {
// 定义student对象属性
private String stuNo;
private String stuName;
private int stuAge;
private float stuMath;
public String getStuNo() {
return stuNo;
}
public void setStuNo(String stuNo) {
this.stuNo = stuNo;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public int getStuAge() {
return stuAge;
}
public void setStuAge(int stuAge) {
this.stuAge = stuAge;
}
public float getStuMath() {
return stuMath;
}
public void setStuMath(float stuMath) {
this.stuMath = stuMath;
}
public Student1() {
}
public Student1(String stuNo, String stuName, int stuAge, float stuMath) {
this.stuNo = stuNo;
this.stuName = stuName;
this.stuAge = stuAge;
this.stuMath = stuMath;
}
/*
* 重新Student对象toString()方法
* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "["+this.stuNo+"\t"+this.stuName+"\t"+this.stuAge+"\t"+this.stuMath+"]";
}
/*
* 比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。
* 参数: o - 要比较的对象。
* 返回:
* 负整数、零或正整数,根据此对象是小于、等于还是大于指定对象。
* 抛出: ClassCastException -
* 如果指定对象的类型不允许它与此对象进行比较。 (non-Javadoc)
*
* @see java.lang.Comparable#compareTo(java.lang.Object)
*/
@Override
public int compareTo(Student1 o) {
//这里根据Math大小进行降序排序
if(this.stuMath<o.getStuMath()) {
return 1;
}else if(this.stuMath == o.getStuMath()) {
return 0;
}else {
return -1;
}
}
}
2、JavaSortDemoMain类
package cn.sjq.sort.java;
import java.util.Arrays;
/**
* 对Student对象集合排序
* @author songjq
*
*/
public class JavaSortDemoMain {
public static void main(String[] args) {
// 实例化Student对象
Student1 s1 = new Student1("STU000001", "Zhang", 19, 89.12f);
Student1 s2 = new Student1("STU000005", "Lisi", 18, 84.12f);
Student1 s3 = new Student1("STU000004", "Wanger", 22, 81.22f);
Student1 s4 = new Student1("STU000003", "Mazi", 21, 95.13f);
Student1 s5 = new Student1("STU000002", "Zhaowu", 17, 86.12f);
/*
// 方式1:将student对象封装到数据,Student对象没有实现Comparable<T>接口
Student[] stuArray = { s1, s2, s3, s4, s5 };
//对stuArray排序
Arrays.sort(stuArray);
// 输出stuArray对象集合
System.out.println("************** Arrays.sort(stuArray) ********************");
for(Student stu:stuArray) {
System.out.println(stu);
}
*/
/**
* 运行结果:
* Student对象没有实现Comparable<T>接口情况下,执行报cn.sjq.sort.java.Student cannot be cast to java.lang.Comparable
* 说明如果要使用Arrays.sort(stuArray)或者Collections.sort(stuArray)对对象进行排序,需要实现Comparable<T>接口
*/
// 方式2:将student对象封装到数据,Student对象实现Comparable<T>接口
Student1[] stuArray = { s1, s2, s3, s4, s5 };
//对stuArray排序
Arrays.sort(stuArray);
// 输出stuArray对象集合
System.out.println("************** Arrays.sort(stuArray) ********************");
for(Student1 stu:stuArray) {
System.out.println(stu);
}
/**
* 运行结果:
* [STU000003 Mazi 21 95.13]
[STU000001 Zhang 19 89.12]
[STU000002 Zhaowu 17 86.12]
[STU000005 Lisi 18 84.12]
[STU000004 Wanger 22 81.22]
从运行结果可以看出,确实是按照stuMath字段按照降序进行了排序
*/
}
}
标签:pack can 说明 dem .com 集合排序 自动 nts 排序
原文地址:http://blog.51cto.com/2951890/2150809