gpt4 book ai didi

java - 比较器 comparingInt

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:09:22 27 4
gpt4 key购买 nike

<分区>

我需要对点列表进行排序。首先我需要比较 x 值,然后如果 x 值相等,则比较 y 值。所以我想我会使用 thenComparing 方法:

Comparator<Point> cmp = Comparator.comparingInt(p -> p.x).thenComparingInt(p -> p.y);

但我不断收到消息:不兼容的类型:Comparator 无法转换为 Comparator

我可以通过其他方式进行这种比较,并且它有效,但我不明白我在这里做错了什么。

最佳答案

此代码确实有效:

Comparator<Point> cmp = Comparator.<Point> comparingInt(p -> p.x)
.thenComparingInt(p -> p.y);

我只添加了<Point>之前 comparingInt , 它显式声明了 p 的类型在 lambda 。这是必要的,因为由于方法链,Java 无法推断类型。

另见 Generic type inference not working with method chaining?


这是另一种选择:

Comparator<Point> cmp = Comparator.comparingDouble(Point::getX)
.thenComparingDouble(Point::getY);

这里,可以毫无问题地推断出类型。但是,您需要使用双重比较,因为 getXgetY返回 double 值。我个人更喜欢这种方法。

关于java - 比较器 comparingInt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36253973/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com