久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > Java集合排序()

Java集合排序()

來源:千鋒教育
發(fā)布人:syq
時間: 2022-10-09 10:37:59 1665283079

  作為處理數(shù)據(jù)的開發(fā)人員,我們需要的最常見的功能之一是排序 - 通過能夠?qū)?shù)據(jù)進行排序,我們可以優(yōu)化算法以更快地運行,并在一小部分時間內(nèi)找到所需的數(shù)據(jù)。在今天的課程中,我們將討論 Java 集合排序()。作為一個快速的思想實驗:想象一下,你正在通過一所大學的名冊搜索一個名字。這所學??赡苡谐汕先f的學生。

Java集合排序()

  如果您獲得的花名冊不是按字母順序排列的,則需要翻閱每一頁并仔細查看,以確保您沒有在任何地方跳過一個名字,直到您最終找到您要查找的名字。另一方面,如果花名冊按字母順序排列,您不僅必須在搜索時不那么嚴格,而且您可以輕松地跳轉(zhuǎn)到花名冊中具有相同第一個字母的部分,并繼續(xù)以大跳躍的方式跳轉(zhuǎn)頁面,直到您找到您要找的人。您使用的數(shù)據(jù)越多,盡可能有效和高效地使用它就越重要。在本文中,我們將介紹如何使用集合排序方法對 Java 中的任何列表實現(xiàn)(包括 ArrayList)進行排序。

  如何使用 Java 集合排序方法對 Java 中的數(shù)組列表進行排序

  我們來談談 Java 集合排序方法。java.util 軟件包包含許多有用的實用程序和軟件包,這些實用程序和軟件包經(jīng)常被開發(fā)人員使用,包括 ArrayList。假設您有以下簡單的程序:您希望能夠打印出顏色列表,但按字母順序排列。你怎么會這樣做?使用 java.util.集合,排序就像一行一樣簡單:噠噠!您的顏色列表現(xiàn)已就地排序。如果您要打印出列表,那么您將獲得以下輸出:這有多容易?!使用 Collections.sort() 按升序?qū)φ麛?shù)、浮點數(shù)或任何其他簡單數(shù)據(jù)類型的列表進行排序同樣簡單。

  但是,如果要按降序排序,該怎么辦?在有些情況下,這是有道理的——想象一下,你有一個特定班級的考試成績列表,你想弄清楚誰是得分最高的學生。按降序(最高分優(yōu)先)對列表進行排序會更有意義,這樣您正在尋找的答案就在頂部。值得慶幸的是,Collection.sort()被可選的第二個參數(shù)覆蓋,它允許您執(zhí)行以下操作:但是什么是比較器?好吧,比較器只是一個比較兩個輸入并返回一個數(shù)字的函數(shù),表示哪個輸入先出現(xiàn)。如果要對基元數(shù)據(jù)類型的數(shù)組列表進行排序,則 Java 集合已經(jīng)為您提供了反向Order() 比較器??梢赃@樣稱呼它:現(xiàn)在,顏色已經(jīng)就地進行了反向排序,因此,如果您將其打印出來,您將獲得以下輸出:

1

  如何使用集合對 Java 中的非基元數(shù)據(jù)類型進行排序

  到目前為止,您已經(jīng)看到使用Java中的字符串或整數(shù)對數(shù)組列表進行排序集合.排序()方法就像一行代碼一樣簡單。但通常,您的數(shù)組列表將存儲非基元數(shù)據(jù)類型。在處理具有更復雜屬性的數(shù)據(jù)時,您將需要編寫類來表示這些對象,以及如何使用它們的屬性將它們相互比較。為了探索這方面的一個示例,讓我們重溫對顏色列表進行排序的示例,但這一次,我們將對 Color 對象進行排序,而不是對字符串進行排序。

  我們的基本 Color 類可能如下所示:為了使我們的 Color 類與 Collections.sort() 兼容,以便集合可以了解如何比較和排序 Color 對象,我們需要進行兩個小的修改:

2

  1.使顏色成為可比較對象(添加實現(xiàn)可比較<對象>)

  2.重寫類中的 compareTo 方法(重寫公共整型比較To(對象 o))

  通過這些修改,我們的類現(xiàn)在看起來像這樣:請注意,顏色的 compareTo 方法只是調(diào)用字符串的 compareTo 方法;排序?qū)醋帜疙樞蛲瓿伞@?,如果我們想按紅色值升序排序,我們可以將 return 語句替換為 return this.r - c.r;(如果我們想按綠色值降序排序,它將返回 c.g - this.g;)?,F(xiàn)在,如果我們調(diào)用顏色數(shù)組列表而不僅僅是字符串,它將起作用,因為集合知道如何比較顏色對象。

  如果不想使對象實現(xiàn)可比較<對象>,也可以為類編寫一個比較器,并將其傳遞到 2 參數(shù) Collection.sort() 方法中。比較器重寫公共整型比較方法(對象一、對象二),而 Collections.sort() 方法在排序時使用它來比較對象。下面實現(xiàn)了 SortByName 和 SortByRed 比較器的示例:這樣,您現(xiàn)在可以在沒有實際實現(xiàn)可比較的 Color 類的情況下進行調(diào)用,并且它仍然有效。有時,您將看到這是使用 lambda 函數(shù)以內(nèi)聯(lián)方式完成的。lambda 函數(shù)本質(zhì)上是一個無名稱函數(shù),您可以在調(diào)用它的代碼行中定義它。

  當您只需要為一個特定實例調(diào)用一個函數(shù)并且不想在其他地方定義一個完整的單獨函數(shù)時,它們非常有用。SortByName 比較器可以使用 lambda 函數(shù)以內(nèi)聯(lián)方式定義,如下所示:您可能已經(jīng)猜到了,(a, b) 表示 lambda 函數(shù)(要比較的兩個對象)的參數(shù)。->表示接下來是 lambda 函數(shù)定義。僅此而已!您現(xiàn)在已經(jīng)看到了使用集合包在 Java 中對數(shù)組列表進行排序的最常用方法。

3

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
大數(shù)據(jù)測試工程師需要具備哪些技能?

一、理解大數(shù)據(jù)概念大數(shù)據(jù)測試工程師需要理解大數(shù)據(jù)的基本概念和原理,如分布式存儲、MapReduce、實時計算等。他們還需要了解如何處理大規(guī)模的...詳情>>

2023-10-14 23:43:03
為什么SpringBoot的 jar 可以直接運行?

一、JAR文件的結(jié)構與執(zhí)行方式Spring Boot的JAR包是Java Archive的縮寫,它是一種壓縮文件格式,可以將Java項目的類文件、資源文件以及依賴庫等...詳情>>

2023-10-14 23:01:49
站群服務器是什么?

站群服務器的含義與用途站群服務器主要用于支持站群,即由一組相互鏈接的網(wǎng)站組成的群體。這些網(wǎng)站通常由同一組織或個人擁有,并且經(jīng)常會互相鏈...詳情>>

2023-10-14 22:46:12
自編碼器是什么?

一、自編碼器原理自編碼器的設計靈感源于神經(jīng)科學中關于感知系統(tǒng)的認知原理,它的核心思想是將輸入數(shù)據(jù)經(jīng)過編碼過程,形成一個隱藏層的特征表示...詳情>>

2023-10-14 22:41:10
什么是云網(wǎng)融合?

一、云網(wǎng)融合的定義云網(wǎng)融合是指將云計算與網(wǎng)絡技術相結(jié)合,實現(xiàn)資源的共享、業(yè)務的協(xié)同,將網(wǎng)絡與云端服務深度融合,提供更靈活、高效、安全的...詳情>>

2023-10-14 22:31:47