程序填空题:学生按年龄排序、查找
有一学生类(Student),含有姓名(name)、年龄(age)属性,该类实现Comparable接口,要求重写compareTo方法,实现按照年龄的大小来确定两个学生的大小关系。
在链表中添加3个学生对象,通过Collections类的sort方法对链表中的学生按照年龄升序排序。输入第4个学生对象,并查找他(她)的年龄是否与链表中某个学生的年龄相同。
Java
import java.util.*;
class Student implements Comparable <Student> {
String name;
int age;
public Student(String name, int age) {
this.age = age;
}
public int compareTo(Student stu) { // 重写compareTo方法
// 两个Student对象相等,当且仅当二者的age相等
}
}
public class Main {
public static void main(String args[ ]) {
List <Student> list = new LinkedList <Student> ( );
Scanner sc = new Scanner(System.in);
System.out.println("输入三个学生的信息:");
list.add( new Student( sc.next(), sc.nextInt() ) );
list.add( new Student( sc.next(), sc.nextInt() ) );
list.add( new Student( sc.next(), sc.nextInt() ) );
Iterator <Student> it =;
System.out.println("排序前,链表中的数据:");
while ( it.hasNext( ) ) { // 是否有下一个元素
Student stu = it.next( ); // 取出下一个元素
System.out.println( "姓名:"+ stu.name + ",年龄:" + stu.age );
}
//排序
System.out.println("排序后,链表中的数据:");
it = list.iterator( );
while ( it.hasNext( ) ) { // 是否有下一个元素
Student stu = it.next( ); // 取出下一个元素
System.out.println( "姓名:"+ stu.name + ",年龄:" + stu.age );
}
System.out.println("输入要查找的学生信息:");
Student stu4 = new Student( sc.next(), sc.nextInt() );
int index = Collections.binarySearch( list, stu4 ); //二分查找
if ()
System.out.println( stu4.name + "与链表中的"
+ list.get(index).name + "年龄相同" );
else
System.out.println( "链表中的对象,没有一个与"
+ stu4.name + "年龄相同的" );
}
}
答案:
第1空: this.name = name;
第2空: return this.age - stu.age;
第3空: list.iterator( )
第4空: Collections.sort(list);
第5空:index >= 0
在链表中添加3个学生对象,通过Collections类的sort方法对链表中的学生按照年龄升序排序。输入第4个学生对象,并查找他(她)的年龄是否与链表中某个学生的年龄相同。
Java
import java.util.*;
class Student implements Comparable <Student> {
String name;
int age;
public Student(String name, int age) {
this.age = age;
}
public int compareTo(Student stu) { // 重写compareTo方法
// 两个Student对象相等,当且仅当二者的age相等
}
}
public class Main {
public static void main(String args[ ]) {
List <Student> list = new LinkedList <Student> ( );
Scanner sc = new Scanner(System.in);
System.out.println("输入三个学生的信息:");
list.add( new Student( sc.next(), sc.nextInt() ) );
list.add( new Student( sc.next(), sc.nextInt() ) );
list.add( new Student( sc.next(), sc.nextInt() ) );
Iterator <Student> it =;
System.out.println("排序前,链表中的数据:");
while ( it.hasNext( ) ) { // 是否有下一个元素
Student stu = it.next( ); // 取出下一个元素
System.out.println( "姓名:"+ stu.name + ",年龄:" + stu.age );
}
//排序
System.out.println("排序后,链表中的数据:");
it = list.iterator( );
while ( it.hasNext( ) ) { // 是否有下一个元素
Student stu = it.next( ); // 取出下一个元素
System.out.println( "姓名:"+ stu.name + ",年龄:" + stu.age );
}
System.out.println("输入要查找的学生信息:");
Student stu4 = new Student( sc.next(), sc.nextInt() );
int index = Collections.binarySearch( list, stu4 ); //二分查找
if ()
System.out.println( stu4.name + "与链表中的"
+ list.get(index).name + "年龄相同" );
else
System.out.println( "链表中的对象,没有一个与"
+ stu4.name + "年龄相同的" );
}
}
答案:
第1空: this.name = name;
第2空: return this.age - stu.age;
第3空: list.iterator( )
第4空: Collections.sort(list);
第5空:index >= 0