java对list进行排序,java对map进行排序(比较器)

本文介绍了如何使用Java对List和Map进行排序。通过Collections.sort方法对List中的Student对象按成绩排序,并展示了将Map转换为List并排序的实现过程。在排序Map时,根据Map.Entry的值(即Student对象的成绩)进行比较。文章还提到,如果需要倒序排序,可以使用Collections.reverseOrder()作为比较器。
摘要由CSDN通过智能技术生成

java对list进行排序

使用Colletions.sort方法

import java.util.*;

public class Main {
public static void main(String[] args) {
List 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{
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方法时按照实际的需求重写即可。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值