java - 如何在多层中按值对 Map 进行排序

标签 java sorting

这是具有以下结构的 map :

Map<String, Oddcurve> curves;

class Oddcurve entends Curve {
    private String curvename;
}

class Curve {
    private int curveId;
    protected Set<CurvePoint> points = new TreeSet();
}

class CurvePoint {
    private double time;
    private double value;
}

我想按 ASC 时间对曲线进行排序,最后返回相同的 map :

proxyCurves.entrySet().stream().sorted(Comparator.comparing(Map.Entry::getValue));

我是这样写的,当我调试它时,我可以看到排序工作正常,但最终仍然返回原始曲线,我不知道为什么?

proxyCurves.values().stream().forEach(curve -> curve.setPoints(curve.getPoints().stream().sorted(new ComparableComparator<>()).collect(Collectors.toSet())));

最佳答案

  • 首先,我建议您重写 hashCode()equals() 方法(您可能会因此遇到问题)。
  • 其次,我建议您实现Comparable CurvePoint 类中的接口(interface),因为您使用的是 TreeSet。然后你就可以覆盖 compareTo() 方法,并定义排序方式。

关于java - 如何在多层中按值对 Map 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44903370/

相关文章:

java - 尝试使用 Intellij 连接到在线数据库

java - "Press Any Key To Continue"阻碍了我的程序

python - 使用相同元素展开列表

java - 如何从java输出中删除 '[' ']'

python - 类型错误 : 'cmp' is an invalid keyword argument for this function

javascript - 推送后保持可观察数组排序

ruby - Rails 3 使用 NOT NULL 在 .where 条件之后排序

java - 将 Maven 存储库添加到 Tomcat 的类路径

java - Java 哈希表单向链表的空指针异常

java - 自定义控件的意外运行时错误(Java Swing GUI)