定义一个Student类,其属性有学号id和姓名name,为了方便显示,该类覆盖了父类Object的toString()方法,返回以下格式的字符串:"学号:"+id+" 姓名:"+name。 在main方法中创建ArrayList对象list,并添加3个Student类对象,并将list的所有元素分行显示;然后用自定义的比较器将list的元素按学号升序排序后输出。
思路:新建一个Student类,其中包含学号id和姓名name,并且重写toString()方法,目的是为了打印的是对象内容而不是地址。
效果图:
代码如下:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Student {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Student(Integer id, String name) {
super();
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "学号:"+id+" 姓名:"+name;
}
public static void main(String[] args) {
List<Student> list=new ArrayList<Student>();
list.add(new Student(1,"小白"));
list.add(new Student(3,"小兰"));
list.add(new Student(2,"小明"));
System.out.println("list的所有元素如下:");
for (Student student : list) {
System.out.println(student);
}
Comparator<Student> comparator =new Comparator<Student>(){
public int compare(Student s1, Student s2) {
if(s1.getId()>s2.getId()){
return 1;
}else{
return -1;
}
}
};
Collections.sort(list,comparator);
System.out.println("按学号升序排序后输出如下:");
for (Student student : list) {
System.out.println(student);
}
}
}
import java.util.ArrayList;
import java.util.List;
/*
* 定义一个Student类,其属性有学号id和姓名name,为了方便显示,该类覆盖了父类Object的toString()方法,
* 返回以下格式的字符串:"学号:"+id+" 姓名:"+name。 在main方法中创建ArrayList对象list,
* 并添加3个Student类对象,
* 并将list的所有元素分行显示;然后用自定义的比较器将list的元素按学号升序排序后输出。
* */
public class 学生类 {
int id;
String name;
public 学生类() {}
public 学生类(int id,String name) {
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "学号:"+id+",姓名:" + name;
}
public static void main(String[] args) {
学生类 s1 = new 学生类(1,"张三");
学生类 s2 = new 学生类(2,"李四");
学生类 s3 = new 学生类(3,"王五");
List<学生类> list = new ArrayList<学生类>();
list.add(s1);
list.add(s2);
list.add(s3);
for(学生类 s :list) {
System.out.println(s);
}
}
}