Java 比较器,比较两个双精度数:

问题描述 投票:0回答:1

我使用 Java 17。这是我的代码:

    public static class SortByPercentLike implements VideoSorterInterface {
        // define Lambda Function
        Comparator<Video> videoPercentLikeComparator = (a,b) -> {
            Double firstVideoPercentLike =  ((a.getLike() - a.getDislike())/ (double) a.getView());
            Double secondVideoPercentLike = ((b.getLike() - b.getDislike())/ (double) b.getView());
            return firstVideoPercentLike.compareTo(secondVideoPercentLike);
        };

        @Override
        public void sort(List<Video> videos) {
            videos.sort(Comparator.comparingDouble(videoPercentLikeComparator));
        }
    }

Comparator.comparingDouble(videoPercentLikeComparator) 部分给了我错误:

reason: no instance(s) of type variable(s) T exist so that Comparator<Video> conforms to ToDoubleFunction<? super T>

有什么问题

我不知道错误消息是什么意思。

java oop lambda comparator java-17
1个回答
0
投票

除非我遗漏了什么,否则

videos.sort(Comparator.comparingDouble(videoPercentLikeComparator));
应该只是
videos.sort(videoPercentLikeComparator);

© www.soinside.com 2019 - 2024. All rights reserved.