gpt4 book ai didi

java - 比较器返回类型与整数不兼容

转载 作者:搜寻专家 更新时间:2023-11-01 01:33:26 24 4
gpt4 key购买 nike

我正在尝试通过 long 类型的对象属性 NodeID 对对象进行排序。

 Collections.sort(PeerNodeInChord, new Comparator<PeerNode>() 
{
@Override public long compare(PeerNode p1, PeerNode p2)
{
return p1.NodeID - p2.NodeID; // Ascending
}

});

我收到以下错误:

compare(PeerNode,PeerNode) in cannot implement compare(T,T) in Comparator return type long is not compatible with int where T is a type-variable: T extends Object declared in interface Comparator

看来我不能将“long”类型作为返回类型,而必须将“int”作为返回类型。

我不允许将 NodeID 类型更改为 int。

有没有什么办法可以通过长类型的对象属性NodeID对PeerNode的ArrayList进行排序??

最佳答案

不要重新发明轮子,只需将Long 中的compare 方法委托(delegate)给:

@Override 
public int compare(PeerNode p1, PeerNode p2) {
return Long.compare(p1.NodeID, p2.NodeID);
}

出于好奇,您可以看一下 Long.compare 实现,它是:

public static int compare(long x, long y) {         
return (x < y) ? -1 : ((x == y) ? 0 : 1);
}

关于java - 比较器返回类型与整数不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30193275/

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