java對陣列,list,map進行排序方法(二)
阿新 • • 發佈:2020-11-01
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方法時按照實際的需求重寫即可。