我有一个2D数组,我将它填充到Segment类型的ArrayList(已经定义的类I')。我想基于每个对象中的第二个元素按升序对Arraylist进行排序。我已经检查了link这个使用类似的类来对它进行排序但它不能与我合作并且它给了我
int无法解除引用
错误。
以下是我的代码
请注意,object.getR()
为我提供了每个对象中的中间元素。例如,段x= (6,8,4)
然后x.gerR()
类型的对象为我提供值8.
int[][] input = {
{0, 3, 3}, {3,5,2}, {6,8,4}, {9,11,3}, {2,4,4}, {5,6,3}, {7,8,3},{9,12,1}
};
ArrayList<Segment> data = new ArrayList<>();
for (int[] input1 : input) {
data.add(new Segment(input1[0], input1[1], input1[2]));
}
Collections.sort(data, new Comparator<Segment>() {
@Override
public int compare(Segment lhs, Segment rhs) {
return lhs.getR().compareTo(rhs.getR());
}
});
答案 0 :(得分:0)
var can = true;
function dodo() {
if(can)
{
can = false;
asyncFunc(function(data) {
doSmth();
can = true;
});
}
}
setInterval(dodo, 0);
建议int cannot be dereferenced
返回getR()
而非int
(尽管您的标题表明了这一点)。 Integer
是原始类型,因此它没有int
之类的任何方法。比较int值的最简单方法是compareTo
(默认情况下,如果要获得降序Integer.compare(a, b)
的结果,则按升序返回结果)。
所以改变
Integer.compare(b, a)
到
return lhs.getR().compareTo(rhs.getR());
自从Java 8以来,我们可以使用Lambdas和方法引用。此外,列表现在还有return Integer.compare(lhs.getR(), rhs.getR());
方法,允许我们编写如下代码:
sort(Comparator)
而不是
data.sort(Comparator.comparingInt(Segment::getR));