美文网首页
【Java】对象排序问题

【Java】对象排序问题

作者: 7ccc099f4608 | 来源:发表于2018-06-28 21:48 被阅读9次

应用场景:ArrayList里存储一坨对象,按照其中的某个属性,对整个ArrayList进行排序

class someDto{
    private String id;
    private double score;

    someDto(String id, double score) {
        this.id = id;
        this.score = score;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }
}

对包含一列someDtoArrayList,进行排序:

  1. 按照id大小进行排序:
Comparator<someDto> cp = Comparator.comparing(someDto::getId);
dtos.sort(cp);   // 顺序
dtos.sort(cp.reversed());  // 逆序
  1. 按照score大小进行排序:
    (都能work,但最后一个似乎最好)
//        Comparator<someDto> cp = (a, b) ->  Double.compare(a.getScore(), b.getScore());
//        Comparator<someDto> cp = Comparator.comparing(someDto::getScore);
        Comparator<someDto> cp = Comparator.comparingDouble(someDto::getScore);

完整代码:

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

class someDto{
    private String id;
    private double score;

    someDto(String id, double score) {
        this.id = id;
        this.score = score;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }
}

public class simpleCompare {
    public static void main(String[] args) {
        List<someDto> dtos = new ArrayList<>();
        dtos.add(new someDto("a", 5));
        dtos.add(new someDto("b", 3));
        dtos.add(new someDto("c", 5));
        dtos.add(new someDto("d", 8));

//        Comparator<someDto> cp = (a, b) -> a.getScore() < b.getScore() ? -1 : 1;
//        Comparator<someDto> cp = (a, b) ->  Double.compare(a.getScore(), b.getScore());
//        Comparator<someDto> cp = Comparator.comparing(someDto::getScore);
        Comparator<someDto> cp = Comparator.comparingDouble(someDto::getScore);
//        Comparator<someDto> cp = Comparator.comparing(someDto::getId);

        dtos.sort(cp.reversed());
        for(someDto dto : dtos) {
            System.out.println("====");
            System.out.println(dto.getId());
            System.out.println(dto.getScore());
        }
    }
}

相关文章

  • Java 排序

    概述 ​对Java对数组对象进行排序,Java对排序问题的处理。Java排序一般包括基础排序和Lambda Com...

  • 【Java】对象排序问题

    应用场景:ArrayList里存储一坨对象,按照其中的某个属性,对整个ArrayList进行排序 对包含一列som...

  • Java 比较器 和 包装类

    Java比较器 背景: 在Java中经常会涉及到多个对象的排序问题,那么就涉及到对象之间的比较 Java中的对象,...

  • Java对象排序

    实现Comparator接口-->Collections.sort(List, new ComparaObject...

  • java 对象数组排序

    java对象List集合的排序(基本类型相似); 方法一:使用for循环的方式来进行对象List集合的排序;方法二...

  • 策略模式

    Java中对List中对象列表某个字段升序排序

  • Java 8 中的Comparator 的用法

    Java 8 中的Comparator可以让我们很方便的实现排序的功能用法:对整数的列表升序排序 排序List对象...

  • java对象比较排序

    问题:点击某个闭合多边形内部,比较点击点距离各条边的距离,取出距离最短的那条线的两个坐标点?思路:根据方法得到点到...

  • Java List对象排序

    升序 降序

  • Dart中的匿名函数

    匿名函数 简单示例:我们要对一个数列对象做排序,如在java中,我们要对一个List对象排序的话,我们调用sort...

网友评论

      本文标题:【Java】对象排序问题

      本文链接:https://www.haomeiwen.com/subject/yygnyftx.html