4.设计并实现一个Student类,要求满足:
1)成员变量有name,score,分别是String和int类型,访问权限为默认。
2)有参数构造方法,给对象成员变量附初始值。
3)成员变量的getter方法获取成员变量值。
4)Student类实现java.lang.Comparable接口,重写int compareTo(T t) 方法,实现按照成绩高低比较两个Student对象的大小
设计一个StudentTest类,要求满足:
1)从键盘接受输入数据,构造三个学生对象,其成员变量值分别为("张1",71),("李2",94),("王3",65)
2)创造一个Student对象的LinkedList链表,表中有上述三个学生对象
3)循环遍历链表对象,按照成绩高低升序排序,并将学生信息打印出 来。
上面实例对象是大写 下面链表添加数据是小写
package csdn20220606;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;
/**
* @author wf
*/
public class Student implements Comparable{
String name;
Integer score;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public Integer getScore() {
return score;
}
@Override
public int compareTo(Object o) {
if (o instanceof Student) {
Student student = (Student)o;
return this.score > student.getScore() ? 1 : 0;
}else {
return -1;
}
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", score=" + score +
'}';
}
}
class StudentTest {
public static void main(String[] args) {
List<Student> list = new LinkedList<>();
Scanner scanner = new Scanner(System.in);
System.out.print("请输入第1个学生的名称:");
String name1 = scanner.next();
System.out.print("请输入第1个学生的成绩:");
int score1 = scanner.nextInt();
list.add(new Student(name1,score1));
System.out.print("请输入第2个学生的名称:");
String name2 = scanner.next();
System.out.print("请输入第2个学生的成绩:");
int score2 = scanner.nextInt();
list.add(new Student(name2,score2));
System.out.print("请输入第3个学生的名称:");
String name3 = scanner.next();
System.out.print("请输入第3个学生的成绩:");
int score3 = scanner.nextInt();
list.add(new Student(name3,score3));
list = list.stream().sorted(Comparator.comparing(Student::getScore)).collect(Collectors.toList());
for (Student student : list) {
System.out.println(student);
}
}
}