1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      JAVA如何像SQL一樣對(duì)List對(duì)象集合進(jìn)行排序-創(chuàng)新互聯(lián)

      創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!

      為平昌等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及平昌網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、平昌網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

      這篇文章主要講解了JAVA如何像SQL一樣對(duì)List對(duì)象集合進(jìn)行排序,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。

      在開始之前,我先賣個(gè)關(guān)子提一個(gè)問題:假設(shè)我們有一個(gè)Movie類,這個(gè)類有三個(gè)成員變量分別是starred(是否收藏), title(電影名稱), rating(評(píng)分)。你知道怎么對(duì)一個(gè)Movie對(duì)象組成的List集合,先按照是否收藏字段倒序排序,再按照評(píng)分的倒序進(jìn)行排序么?如果您不知道4行代碼以內(nèi)的解決方案(其實(shí)是1行代碼就可以實(shí)現(xiàn),但筆者格式化為4行),我覺得您有必要一步步的看下去。

      在java 8 之前,實(shí)現(xiàn)對(duì)象Collection排序,集合中被排序和比較大小的對(duì)象得實(shí)現(xiàn)Comparable接口。在java 8之后,有了Comparator比較器的概念,使用Comparator完成對(duì)象數(shù)組的排序更加方便快捷,下面就給大家簡單的介紹一下java 8中使用Comparator排序的方法。

      一、字符串List排序

      JAVA如何像SQL一樣對(duì)List對(duì)象集合進(jìn)行排序

      • cities是一個(gè)字符串?dāng)?shù)組。注意london的首字母是小寫的。
      • 當(dāng)使用sort方法,按照String.CASE_INSENSITIVE_ORDER(字母大小寫不敏感)的規(guī)則排序,結(jié)果是:[london, Milan, New Delhi, San Francisco, Tokyo]
      • 如果使用Comparator.naturalOrder()字母自然順序排序,結(jié)果是:[Milan, New Delhi, San Francisco, Tokyo, london]
         

      在java 7我們是使用Collections.sort()接受一個(gè)數(shù)組參數(shù),對(duì)數(shù)組進(jìn)行排序。在java 8之后可以直接調(diào)用集合類的sort()方法進(jìn)行排序。sort()方法可以傳入一個(gè)字符串的排序規(guī)則,如:String.CASE_INSENSITIVE_ORDER,也可以傳入一個(gè)排序器Comparator.naturalOrder()作為參數(shù)。

      二、整數(shù)類型List排序

      JAVA如何像SQL一樣對(duì)List對(duì)象集合進(jìn)行排序

      按數(shù)字的自然順序排序,結(jié)果是[1, 2, 4, 6, 9]

      三、按對(duì)象字段對(duì)對(duì)象List排序

      這個(gè)功能就比較有意思了,舉個(gè)例子大家理解一下。假設(shè)我們有一個(gè)類Movie,有三個(gè)成員變量分別是starred(是否收藏), title(電影名稱), rating(評(píng)分)。

      JAVA如何像SQL一樣對(duì)List對(duì)象集合進(jìn)行排序

      • 首先,我們創(chuàng)建了四個(gè)Movie對(duì)象,然后將它們轉(zhuǎn)換為List
      • 然后重點(diǎn)的的代碼:使用了函數(shù)應(yīng)用Movie::getTitle作為對(duì)象的排序字段,即按照電影的title作為排序字段
      • 然后調(diào)用List的forEach方法將List排序結(jié)果打印出來,如下(當(dāng)然我們重寫了toString方法,不然打印結(jié)果沒有意義):

      JAVA如何像SQL一樣對(duì)List對(duì)象集合進(jìn)行排序

      • 如果我們希望List按照Title的倒序排序,就使用reversed()方法。如:Comparator.comparing(Movie::getTitle).reversed()。

      四、使用自定義Comparator排序

      我們自定義一個(gè)排序器,實(shí)現(xiàn)compare函數(shù)。返回0表示元素相等,-1表示前一個(gè)元素小于后一個(gè)元素,1表示前一個(gè)元素大于后一個(gè)元素。這個(gè)規(guī)則似乎和java 8之前沒什么區(qū)別。

      JAVA如何像SQL一樣對(duì)List對(duì)象集合進(jìn)行排序

      最終的打印結(jié)果如下,按照started的自定義規(guī)則進(jìn)行排序。

      JAVA如何像SQL一樣對(duì)List對(duì)象集合進(jìn)行排序

      這段代碼如果以lambda表達(dá)式簡寫。箭頭左側(cè)是參數(shù),右側(cè)是函數(shù)體,參數(shù)類型和返回值根據(jù)上下文自動(dòng)判斷。如下:

      JAVA如何像SQL一樣對(duì)List對(duì)象集合進(jìn)行排序

      五、通過Comparator鏈對(duì)對(duì)象List排序

       JAVA如何像SQL一樣對(duì)List對(duì)象集合進(jìn)行排序

      上面這段代碼先是按是否收藏的倒序排序,再按照電影的評(píng)分大小的倒序排序,排序結(jié)果如下:

      JAVA如何像SQL一樣對(duì)List對(duì)象集合進(jìn)行排序

      看完上述內(nèi)容,是不是對(duì)JAVA如何像SQL一樣對(duì)List對(duì)象集合進(jìn)行排序有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。


      網(wǎng)站欄目:JAVA如何像SQL一樣對(duì)List對(duì)象集合進(jìn)行排序-創(chuàng)新互聯(lián)
      URL網(wǎng)址:http://ef60e0e.cn/article/pgohj.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        台北县| 福建省| 云浮市| 新乡县| 新绛县| 乐平市| 双城市| 呼和浩特市| 达拉特旗| 巴林右旗| 河津市| 太谷县| 靖宇县| 三穗县| 和静县| 沅江市| 荆门市| 永善县| 奎屯市| 社旗县| 商河县| 萨迦县| 宁乡县| 平原县| 十堰市| 军事| 乃东县| 温州市| 喀什市| 丽江市| 黄大仙区| 临桂县| 镇平县| 大渡口区| 新邵县| 湘乡市| 华坪县| 怀来县| 社会| 丰台区| 澜沧|