给个例子给你参考
package com.itheima;
import java.util.*;
/**
* 定义一个学生类, 需要有姓名, 年龄, 考试成绩三个成员属性,创建5个对象, 属性可为任意值.
* 编程对这5个对象按成绩排序,并将结果输出。(提示,用TreeSet和Comparator实现)
* @author Administrator
*/
public class Test10
{
public static void main(String args[])
{
//让集合自身具备比较性
Set<Student> set = new TreeSet<Student>(new Comparator<Student>(){
public int compare(Student student1,Student student2)
{
//这条语句可能返回负数,正数或0
int result = student1.getScore()-student2.getScore();
//1、分数相同,就用年龄排序
if(result==0)
{
result = student1.getAge()-student2.getAge();
//2、如果年龄也相同,那就用名字排序
if (result==0)
{
//3、如果名字也相同,那么就是三个属性相同,即为同一个人了
result = student1.getName().compareTo(student2.getName());
}
}
return result;
}
});
//添加学生
set.add(new Student("张三",30,300));
set.add(new Student("王五",50,500));
set.add(new Student("李四",40,400));
set.add(new Student("赵六",70,700));
set.add(new Student("孙七",70,700));
set.add(new Student("孙七",70,700));//这个存不进去
//set.size()获取集合元素的个数
System.out.println("共有"+set.size()+"个学生");
//遍历
for (Iterator<Student> it = set.iterator(); it.hasNext(); )
{
System.out.println(it.next());
}
}
}
/**
* 学生类
* @author Administrator
*/
class Student
{
private String name;//名字
private int age;//年龄
private int score;//分数
//实例化对象时,就初始化这三个属性
Student(String name, int age, int score)
{
this.name = name;
this.age = age;
this.score = score;
}
//为三个私有属性向外部提供访问方法
public String getName()
{
return this.name;
}
public int getAge()
{
return this.age;
}
public int getScore()
{
return this.score;
}
//覆写toString方法
public String toString()
{
return this.name+"---"+this.age+"----"+this.score;
}
} |