LinkedList list = new LinkedList<>();
Person a1 = new Person("张三", 75);
Person a2 = new Person("李四", 78);
Person a3 = new Person("王五", 80);
Person a4 = new Person("赵六", 90);
Collections.addAll(list,a1,a2,a3,a4);
看你排序的需求,你是要用姓名排序,还是用分数排序。
用sort函数。
public class Person1 implements Comparable < Person1 > {
private Float height;
private String name;
Person1(float height) {
this.height = height;
}
public Float getHeight() {
return height;
}
public void setHeight(float height) {
this.height = height;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override public int compareTo(Person1 p) {
if (this.getHeight() < p.getHeight()) {
return 1;
} else if (this.getHeight() > p.getHeight()) {
return - 1;
} else {
return 0;
}
}
}
public class Question3_1 {
public static void main(String[] args) {
Person1 p1 = new Person1(23.4f);
p1.setName("Stud1");
Person1 p2 = new Person1(2.34f);
p2.setName("Stud2");
Person1 p3 = new Person1(34.32f);
p3.setName("Stud3");
Person1 p4 = new Person1(56.45f);
p4.setName("Stud4");
Person1 p5 = new Person1(21.4f);
p5.setName("Stud5");
LinkedList < Person1 > al = new LinkedList < Person1 > ();
al.add(p1);
al.add(p2);
al.add(p3);
al.add(p4);
al.add(p5);
Collections.sort(al); //这里控制降序
for (Person1 p: al) System.out.println(p.getName() + " " + p.getHeight());
}
}
这是从小到大排序,如果要从大到小排序久用b.grade.compareTo(a.grade)
list.sort(new Comparator<Person>() {
@Override
public int compare(Person a, Person b) {
return a.getGrade().compareTo(b.getGrade());
}
});
按java8的流排序即可,简单又方便:
public static void main(String[] args) {
LinkedList list = new LinkedList<>();
Person a1 = new Person("张三", 75);
Person a2 = new Person("李四", 78);
Person a3 = new Person("王五", 80);
Person a4 = new Person("赵六", 90);
Collections.addAll(list,a1,a2,a3,a4);
//getFracetion 分数(具体字段以你自己定义的为准)
List<Person> personSortFracetion = list.stream().sorted(Comparator.comparing(Person::getFracetion)).collect(Collectors.toList());
personSortFracetion.stream().forEach(item->{
System.out.println("排序结果为:"+item.getFracetion());
});
}
LinkedList list = new LinkedList<>();
Person a1 = new Person("张三三", 79);
Person a2 = new Person("张三三", 78);
Person a3 = new Person("王五", 80);
Person a4 = new Person("赵六", 90);
Collections.addAll(list,a1,a2,a3,a4);
Collections.sort(list,new Comparator<Person>() {
@Override
public int compare(Person p1, Person p2) {
int i = p1.getName().compareTo(p2.getName());
if(i==0) {
i = p1.getAge()-p2.getAge();
}
return i;
}
});
for (int i = 0; i < list.size(); i++) {
Person p = (Person)list.get(i);
System.out.println(p.getName()+","+p.getAge());
}