首先创建一个学生信息类
创建一个TreeSet集合
学生类要实现compareble接口,并且重写compareTo方法
按照总成绩排序,其次姓名,其次各科成绩等
这里说的排序是输出的自然排序 跟存储顺序无关的,并且还要去重
代码:
package kehouzuoye23_5;
public class StudentMessage implements Comparable<StudentMessage> {
private String name;
private int yuwen;
private int shuxue;
private int yingyu;
public StudentMessage() {
super();
}
public StudentMessage(String name, int yuwen, int shuxue, int yingyu) {
super();
this.name = name;
this.yuwen = yuwen;
this.shuxue = shuxue;
this.yingyu = yingyu;
}
public String toString() {
return "姓名:" + name + ", 语文:" + yuwen
+ ", 数学:" + shuxue + ", 英语:" + yingyu ;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getYuwen() {
return yuwen;
}
public void setYuwen(int yuwen) {
this.yuwen = yuwen;
}
public int getShuxue() {
return shuxue;
}
public void setShuxue(int shuxue) {
this.shuxue = shuxue;
}
public int getYingyu() {
return yingyu;
}
public void setYingyu(int yingyu) {
this.yingyu = yingyu;
}
public int compareTo(StudentMessage o) {
int a = -(this.yuwen+this.shuxue+this.yingyu-o.getYuwen()-o.getShuxue()-o.getYingyu());
int b = -(this.name.compareTo(o.getName()));
int c =-(this.yuwen-o.getYuwen());
int d = -(this.shuxue-o.getShuxue());
int e = -(this.yingyu-o.getYingyu());
if(a==0){
if(b==0){
if(c==0){
return d==0?e:d;
}
return c;
}
return b;
}
return a;
}
}
测试类:
package kehouzuoye23_5;
import java.util.Collections;
import java.util.Scanner;
import java.util.TreeSet;
public class StudentMessageDemo {
public static void main(String[] args) {
TreeSet<StudentMessage> ts = new TreeSet<StudentMessage>();
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 5; i++) {
System.out.println("请输入学生姓名:");
String s1 = sc.nextLine();
System.out.println("语文成绩:");
int a = sc.nextInt();
sc.nextLine();
System.out.println("数学成绩:");
int b = sc.nextInt();
sc.nextLine();
System.out.println("英语成绩:");
int c = sc.nextInt();
sc.nextLine();
StudentMessage s = new StudentMessage(s1,a,b,c);
ts.add(s);
}
for (StudentMessage sM : ts) {
System.out.println(sM);
}
}
}
|
|