一.对存入数组的Person类按照年龄排序
前提:Person类含有 int类型的属性(比如age)
public class Person(){
private String name;
private int age;
}
排序后输出为:
- “李四”,
- 20 “王五”,
- 30 “张三”, 40
Person p1 = new Person("张三",40);
Person p2 = new Person("李四",20);
Person p3 = new Person("王五",30);
Person[] pArr={p1,p2,p3};
第一种:
Arrays.sort(pArr, new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
return o1.getAge() - o2.getAge();
}
});
第二种:
Arrays.sort(pArr, ((Person o1, Person o2) -> {
return o2.getAge() - o1.getAge();
}));
第三种:
Arrays.sort(pArr, ((o1, o2) -> o1.getAge() - o2.getAge()))
二.对map<String,Integer>按value排序
排序后输出形式
java 45
hello 23
c 2
world 1
HashMap<String, Integer> map = new HashMap<>();
map.put("hello", 23);
map.put("world", 1);
map.put("java", 45);
map.put("c", 2);
List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
Collections.sort(list, (o1, o2) -> o2.getValue() - o1.getValue());
三.结合优先队列,构建大顶堆
int[] array = {2,8,5,3,6,9,11,7,2,11,6,9};
//降序排列
//Integer拆箱int
Queue<Integer> max = new PriorityQueue<>((o1, o2) -> o2.intValue()-o1.intValue());