如何通過實現可比較的接口來對對象的元素進行排序?

下面是示例代碼:

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);
    }

}

所以我不知道為什么我不能使用Collections.sort,直到我將Comparable接口的compareTo方法添加到類點。

我也不知道該方法如何與僅通過返回-1、0和1對元素進行排序進行比較。

如果有人有什么想法,請向我解釋。

? 最佳回答:

所以我不知道為什么我不能使用Collections.sort,直到我將Comparable接口的compareTo方法添加到類點。

因為java不知道為什么new Point(1)應該在new Point(2)之上或之下排序。

我也不知道該方法如何與僅通過返回-1、0和1對元素進行排序進行比較。

假設我給你一個包里面有一張紙。每篇論文都列出了一個名字和一個電話號碼,我想讓你寫一本電話簿,但你不知道是哪本。

你所能做的就是要求任何兩個音符,其中一個比另一個高。

然后你就可以做這項工作了:假設到目前為止你已經整理了12個音符。

然后從袋子里拿出第13張鈔票,問我它是高于還是低于你那堆鈔票中的第6張。我說“更高”。如果你問我9號的事,我會說更高。你問11號,我說低一點。如果你問我10號,我會說更高。

這就是你所需要知道的>你將音符滑入第10和11個音符之間,然后轉到第14個音符。

看見一位預言家剛剛回答了這個問題:給出這兩個音符,告訴我:這一個比那一個低,高,還是相同這就是你所需要的。

您也已經過時了,這段代碼和編寫自己的compareTo的概念已經相當陳舊了。現在簡單多了:

list.sort(Comparator.comparingInt(Point::getValue));

這就是你所需要的。將通過在每個生成int值的點上運行p.getValue()進行排序,然后通過將較低的int視為表示該點“位于”具有較高值的點之前來對點進行排序。

然后可以使用二級排序順序(如果兩個點具有相同的值,則改為按其ID排序)、定義null值在行中的位置、反轉順序等等。

無需處理-1、0和+1。

主站蜘蛛池模板: 夜夜爽一区二区三区精品| 日本韩国一区二区三区| 国产一区二区三区不卡在线观看| 日本v片免费一区二区三区 | 国产aⅴ一区二区三区| 国产成人久久精品一区二区三区 | 变态调教一区二区三区| 亚洲国产美国国产综合一区二区| 无码AV动漫精品一区二区免费| 国产乱码精品一区二区三区中| 国产成人一区二区三区在线观看| 99精品高清视频一区二区| 精品一区二区三区AV天堂| 无码一区二区三区亚洲人妻| 国产精品成人免费一区二区| 亚洲另类无码一区二区三区| 日韩国产精品无码一区二区三区| 国产日韩一区二区三区在线观看| 中文字幕不卡一区| 精品国产香蕉伊思人在线在线亚洲一区二区 | 国产主播福利一区二区| 精品无码国产一区二区三区AV| 亚洲国产一区在线| 麻豆一区二区三区精品视频| 天堂资源中文最新版在线一区| 无码一区二区三区免费| 亚洲AV无码一区二区三区在线 | 中文字幕亚洲一区二区va在线| 久久精品人妻一区二区三区| 亚洲一区二区三区免费| 日本一区二区三区在线网 | 免费无码VA一区二区三区| 精品无码国产一区二区三区AV| 无码精品尤物一区二区三区| 一区二区三区视频| 视频在线一区二区| 国产亚洲无线码一区二区 | 女女同性一区二区三区四区| 色天使亚洲综合一区二区| 亚洲一区二区三区国产精品| 美女一区二区三区|