下面是示例代码:
public class test {
public static void main(String[] args) {
ArrayList<Point> list = new ArrayList<Point>();
list.add(new Point(1));
list.add(new Point(4));
list.add(new Point(2));
list.add(new Point(3));
list.add(new Point(2));
Collections.sort(list);
}
}
所以我不知道为什么我不能使用这些收藏。排序,直到我将Comparable接口的compareTo方法添加到类点。
我也不知道该方法如何比较通过返回-1、0和1对元素进行排序。
如果有人有任何想法,请向我解释。
所以我不知道为什么我不能使用这些收藏。排序,直到我将Comparable接口的compareTo方法添加到类点。
因为java不知道为什么new Point(1)
应该在new Point(2)
之上或之下排序。
我也不知道该方法如何比较通过返回-1、0和1对元素进行排序。
假设我给你一个包,里面有一张纸。每篇论文都列出了一个名字和一个电话号码,我想让你写一个电话簿,但你不知道是哪个订单。
你所能做的就是要求任何两个音符,其中一个比另一个高。
然后你就可以做这项工作了:假设到目前为止你已经整理了12张纸币。
然后从袋子里拿出第13张纸币,问我它是高于还是低于你那堆纸币中的第6张。我说“更高”。所以你问我关于9号的事,我说得更高。你问11号的事,我说低一点。如果你问我10号的事,我会说更高。
你只需要知道这些
看见一位刚刚回答了这个问题的预言家:给出这两个音符,告诉我:这一个比那一个低,高,还是相同这就是你所需要的。
您也已经过时了,这段代码和编写自己的compareTo的概念已经相当陈旧了。现在简单多了:
list.sort(Comparator.comparingInt(Point::getValue));
这就是你所需要的。将通过在每个生成int值的点上运行p.getValue()
进行排序,然后通过将较低的int视为该点“位于”具有较高值的点之前来对点进行排序。
然后,您可以使用二级排序顺序(如果两个点的值相同,则改为按其ID排序)、定义行上的值应适合的位置、颠倒顺序等。
无需处理-1、0和1。