java對list進行排序
使用Colletions.sort方法
import java.util.*;
public class Main {
public static void main(String[] args) {
List<Student> listStu = new ArrayList<>();
listStu.add(new Student(98));
listStu.add(new Student(50));
listStu.add(new Student(70));
listStu.add(new Student(46));
listStu.add(new Student(98));
listStu.add(new Student(100));
listStu.add(new Student(68));
System.out.println(listStu);
Collections.sort(listStu,new Student());
System.out.println(listStu);
}
}
class Student implements Comparator<Student>{
int grade;//成績
public Student(int grade){
this.grade = grade;
}
public Student(){}
public String toString(){
return String.valueOf(grade);
}
@Override
public int compare(Student o1, Student o2) {
if(o1.grade<o2.grade)
return -1;
else if(o1.grade>o2.grade)
return 1;
else
return 0;
}
}
java對map進行排序
先將map轉化成Map.Entry的列表,再對該列表進行排序,與上面的對list排序一致。
package com.company;
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<String,Student> map = new HashMap<>();
map.put("小明",new Student(90));
map.put("小花",new Student(100));
map.put("小君",new Student(90));
map.put("小李",new Student(83));
map.put("小蘭",new Student(75));
System.out.println(map);
List<Map.Entry<String,Student>> listStu = new ArrayList<>(map.entrySet());
Collections.sort(listStu, new Comparator<Map.Entry<String, Student>>() {
@Override
public int compare(Map.Entry<String, Student> o1, Map.Entry<String, Student> o2) {
if(o1.getValue().grade<o2.getValue().grade)
return -1;
else if(o1.getValue().grade>o2.getValue().grade)
return 1;
else
return 0;
}
});
System.out.println(listStu);
}
}
class Student{
int grade;//成績
public Student(int grade){
this.grade = grade;
}
public Student(){}
public String toString(){
return String.valueOf(grade);
}
}
輸出如下:

ps,若需要倒排序時,可以傳入Collections.reverseOrder()這個比較器,或者在重寫compare方法時按照實際的需求重寫即可。
