51,411
社区成员
发帖
与我相关
我的任务
分享
//lz的Students,代码中改成了Student(只为方便书写,呵呵)
import java.util.TreeSet;
import java.util.Iterator;
class StudentMark
{
public static void main(String[] args)
{
Student a=new Student("张三",14,96);
Student b=new Student("李四",16,91);
Student c=new Student("王五",14,90);
//TreeSet:底层是二叉树数据结构,会对其元素进行排序;元素不会重复
TreeSet<Student> ts = new TreeSet<Student>();
ts.add(a);
ts.add(b);
ts.add(c);
ts.add(new Student("王二",14,90));
ts.add(new Student("王二",14,90));
Iterator<Student> it = ts.iterator();
while(it.hasNext())
{
Student stu = it.next();
System.out.println(stu.toString());
}
}
}
class Student implements Comparable<Student> //需要实现Comparable接口
{
private String name;
private int age;
private int mark;
public Student(String name,int age,int mark)
{
this.name=name;
this.age=age;
this.mark=mark;
}
//重写compareTo()方法
public int compareTo(Student obj)
{
int num = new Integer(this.mark).compareTo(new Integer(obj.mark)); //比较的主要条件是:mark
if(num==0)
return this.name.compareTo(obj.name); //比较的次要条件是:name,当分数一样后,再比较姓名,根据返回值,进行存储,如果姓名依然一样,这个数据就不会存储进去,
//如果需要,你可以再加上比较年龄的条件
return num;
}
//重写String()方法,以便输出
public String toString()
{
return this.name+".."+this.age+".."+this.mark;
}
public void setName(String name)
{
this.name=name;
}
public String getName()
{
return name;
}
public void setAge(int age)
{
this.age=age;
}
public int getAge()
{
return age;
}
public void setMark(int mark)
{
this.mark=mark;
}
public int getMark()
{
return mark;
}
}
public class StudentMark {
public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
Student a = new Student("张三", 14, 96);
Student b = new Student("李四", 16, 91);
Student c = new Student("王五", 14, 90);
list.add(a);
list.add(b);
list.add(c);
Collections.sort(list);
for (Student student : list) {
System.out.println(student.toString());
}
}
}
class Student implements Comparable<Student>{
private String name;
private int age;
private int mark;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void setMark(int mark) {
this.mark = mark;
}
public int getMark() {
return mark;
}
public Student(String name, int age, int mark) {
this.name = name;
this.age = age;
this.mark = mark;
}
public int compareTo(Student o) {
return this.mark-o.mark;
}
public String toString(){
return this.name + " " + this.age + " " + this.mark;
}
}