今天遇到了一个问题,用collections.sort()进行字符串升序排列。发现无论如何也不是自己想要的顺序。在网上找了好多资料也没有解决。后来发现是将其中的一个字母大写。导致顺序出现了变化。
package 1;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
public class 2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Student stu1=new Student(40,"peter",20);
Student stu2=new Student(28,"angel",5);
Student stu3=new Student(35,"tom",18);
List <Student> list=new ArrayList<Student>();
list.add(stu1);
list.add(stu2);
list.add(stu3);
for(Student a:list)
{
System.out.println(a);
}
Collections.sort(list, new StudentList());
for(Student a:list)
{
System.out.println(a);
}
}
}
package 1;
public class Student {
private int id;
private String name;
private int age;
public Student(int id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString() {
return "[学生学号" + id + ", 学生姓名" + name + ", 学生年龄" + age+" ]";
}
}
package 1;
import java.util.Comparator;
public class StudentList implements Comparator<Student> {
@Override
public int compare(Student o1, Student o2) {
// TODO Auto-generated method stub
String s1=o1.getName();
String s2=o2.getName();
return s1.compareTo(s2);
}
}
运行结果截图: