java中的排序方法,Java中的排序比較方式:自然排序和比較器排序

這里所說到的Java中的排序并不是指插入排序、希爾排序、歸并排序等具體的排序算法。而是指執行這些排序算法時,比較兩個對象“大小”的比較操作。我們很容易理解整型的 i>j 這樣的比較方式,但當我們對多個對象進行排序時,如何比較兩個對象的“大小”呢?這樣的比較 stu1 > stu2 顯然是不可能通過編譯的。為了解決如何比較兩個對象大小的問題,JDK提供了兩個接口 java.lang.Comparable 和 java.util.Comparator 。

一、自然排序:java.lang.Comparable

Comparable 接口中只提供了一個方法: compareTo(Object obj) ,該方法的返回值是 int 。如果返回值為正數,則表示當前對象(調用該方法的對象)比 obj 對象“大”;反之“小”;如果為零的話,則表示兩對象相等。下面是一個實現了 Comparable 接口的 Student 類:

public class Student implements Comparable {

private int id;

private String name;

public Student() {

super();

}

@Override

public int compareTo(Object obj) {

if (obj instanceof Student) {

Student stu = (Student) obj;

return id - stu.id;

}

return 0;

}

@Override

public String toString() {

return "";

}

}

Student 實現了自然排序接口 Comparable ,那么我們是怎么利用這個接口對一組 Student 對象進行排序的呢?我們在學習數組的時候,使用了一個類來給整型數組排序: java.util.Arrays 。我們使用 Arrays 的 sort 方法來給整型數組排序。翻翻 API 文檔就會發現, Arrays 里給出了 sort 方法很多重載形式,其中就包括 sort(Object[] obj) ,也就是說 Arryas 也能對對象數組進行排序,排序過程中比較兩個對象“大小”時使用的就是 Comparable 接口的 compareTo 方法。

public class CompareTest {

public static void main(String[] args) {

Student stu1 = new Student(1, "Little");

Student stu2 = new Student(2, "Cyntin");

Student stu3 = new Student(3, "Tony");

Student stu4 = new Student(4, "Gemini");

Student[] stus = new Student[4];

stus[0] = stu1;

stus[1] =

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395001.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395001.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395001.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ImageView縮放選項

ImageView.ScaleType 將圖片邊界縮放到所在view邊界時的縮放選項。 Options for scaling the bounds of an image to the bounds of this view. 不同選項含義 CENTER 居中,不縮放。 Center the image in the view, but perform no scaling. CENTER_CROP 居中&#x…

css命名_CSS命名約定將節省您的調試時間

css命名I have heard lots of developers say they hate CSS. In my experience, this comes as a result of not taking the time to learn CSS.我聽到很多開發人員說他們討厭CSS。 以我的經驗,這是因為沒有花時間學習CSS。 Korean ??韓文?? ??: ??? ?…

電腦刪除快捷鍵_可能是知乎最有用的 Windows 快捷鍵學習指南。

在任何地方搜索“快捷鍵的使用”,你都能找到無數的列表清單。但你應該不會專門去對照一個個的表單,企圖把所有快捷鍵全部掌握吧?經過三年左右的總結和視頻制作,Topbook 大概產出了 20 支左右的快捷鍵、快捷操作及應用等相關的視頻…

java自動依照日期建表,腳本根據一個表中的日期字段填充每月匯總表

你想在這里做兩件事 . 我假設您正在使用Oracle(因為您正在使用Java) .首先,您希望對每個用戶的每日交易進行分組 .創建一個名為 tempTable 的臨時表 .使用 to_char(currentdate, yyyy/mm/dd) 對它們進行分組 .INSERT INTO tempTableSELECTuserid,resourceid,doc_nam…

算法專題 普及組【2008】三3 C++版

轉載于:https://www.cnblogs.com/qilinart/articles/5914850.html

linux用戶修改用戶shell

要拒絕系統用戶登錄,可以將其shell設置為/usr/sbin/nologin或者/bin/false # usermod -s /usr/sbin/nologin username 或者 # usermod -s /bin/false username /bin/false/bin/false什么也不做只是返回一個錯誤狀態,然后立即退出。將用戶的shell設置為/bin/false,用戶會無法登錄…

【覆蓋安裝】通用測試點

需要xmind文檔請留言將會私發。 轉載于:https://www.cnblogs.com/syw20170419/p/10457600.html

instagram架構_如何創建像Instagram這樣的照片共享應用程序:基本知識。

instagram架構by Dmytro Brovkin由Dmytro Brovkin 如何創建像Instagram這樣的照片共享應用程序:基本知識。 (How to create a photo sharing app like Instagram: the basics.) After two centuries of rapid development, photography has come a long way from b…

菜鳥裹裹電腦版_【綿陽最新轉讓】3500低價出售家用制氧機!東芝i5筆記本電腦、索尼微單相機、聯想筆記本電腦、奶茶店、服裝店轉讓......

轉換價值,傳承夢想西蜀網讓你淘好物~3500出售魚躍家用制氧機,帶霧化全新魚躍152021/9F_5W型家用制氧機,帶霧化。正規醫療器械公司買的,有小票,買到只用了一次,買成4382現低價轉讓。聯系電話:鄧女…

認識軟件性能測試10大誤區

曾經我們幫助客戶進行軟件性能測試的時候,客戶不解的問,不是必須通過功能測試后才可以測試性能嗎?可能有很多人會存在這樣的疑問,在這里,我們的多位專家根據多年經驗總結出性能測試的10大誤區,希望能給大家…

mac php oracle11g,Oracle11G函數整理

返回字符的字符函數 1、CHR(n) [n為正整數,如果ngt;256,就去MOD(n,256)] select CHR(65) a1,CHR(67)||CHR(65)||CHR(84) a2 FR返回字符的字符函數1、CHR(n) [n為正整數,如果n>256,就去MOD(n,256)]2、CONCAT(ch1,ch2) 拼接字符串…

軟工_個人博客作業3

PART1 博文閱讀感想 十幾篇博客一氣讀下來,有一個詞一直縈繞在我的腦海里——緊張!緊張!還是緊張! 首先這緊張來自于自己的學習方面。作為計算機系的科班出身,當然與生俱來就有一種優越感——我們是專業的,…

Linux環境中配置環境變量無效

1.在Linux系統中的【 ~/.baserc 】文件與【 /etc/profile 】配置環境變量后(可以使任意環境變量)無效的現象,如下為解決辦法: 使用命令: 1 vim ~/.zshrc 在 【# User configuration】下添加環境變量; 如圖說明: 2.也可…

手機能打開的表白代碼_手機拍照還能加文字?打開這個自帶按鈕,一鍵就能添加方便...

手機拍照還能文字?打開這個自帶按鈕,一鍵就能添加方便我們日常生活中,經常會在朋友圈里面看到,這樣的圖片,不僅圖片好看,上面還帶有精美的文字,里面還添加了時間、地點、天氣,在配上…

如何使create-react-app與Node Back-end API一起使用

This is a very common question among newer React developers, and one question I had when I was starting out with React and Node.js. In this short example I will show you how to make create-react-app work with Node.js and Express Back-end.這在新的React開發人…

Spring Cloud Eureka 入門 (二)服務提供者詳解

2019獨角獸企業重金招聘Python工程師標準>>> 摘要: 原創出處:www.bysocket.com 泥瓦匠BYSocket 希望轉載,保留摘要,謝謝! “優秀不是過去是一種心態” 「Spring Cloud Eureka 入門系列」Spring Cloud Eureka 入門 (一…

題解 CF682C 【Alyona and the Tree】

簡單搜索題,我們每找到一組不滿足題目給出條件的點和邊就將其整個子樹刪除,然后最終答案加上該子樹的大小即可。注意,搜索的時候如果當前的邊權和sum已經為負了,應該將其改為0(可以想想為什么) 注&#xff…

現在mfc的現狀如何_天璣云客:微信代運營現在什么現狀?如何挑選合適的代運營公司?...

來源:天璣云客綜合整理團隊成員均來自“中國房地產策劃代理百強企業”TOP10以及”中國企業500強“TOP20企業并擔任重要職位。和你一起聊運營、產品、技術研發、房地產以及各種新興行業有哪些有趣的營銷玩法。由于微信公眾號/小程序的影響力日益增強,以及…

第五百一十八天 how can I 堅持

閑是真能閑出病來,無名的焦慮啊。不想這樣。 天越來越冷了。后天就放假了,有點小激動,這一天天的。 今晚沒玩游戲,看了會《微微一笑很傾城》,只能是崇拜那些玩游戲好的,就是玩不好,哎。。。 睡覺…

第三方登錄 人人php,人人網第三方登錄接口方案

之前閑暇有空,就去了解了下人人網的第三方登錄的接口,呵呵..發布想了解的都了解下.一. REST接口模式使用HTTP post 協議or HTTP get 協議發出請求.HTTP 協議同REST服務器通信.Java Struts 1.2 .do 的模式請求.代碼:1.URL編碼的示例代碼(java): value java.net.UR…