最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java中實現(xiàn)對象排序的兩種方法(Comparable,Comparator)

 更新時間:2022年12月13日 10:03:45   作者:穆雄雄  
這篇文章主要給大家介紹了關(guān)于java中實現(xiàn)對象排序的兩種方法,一種是實現(xiàn)Comparable進行排序,另一種是實現(xiàn)Comparator進行排序,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

前言:

我們知道,在平時做項目的過程中,我們總會用到各種各樣的排序,或是升序,或是降序。在java中,要實現(xiàn)排序有好多中方式,比如我們耳熟能詳?shù)拿芭菖判?、選擇排序等,但是我們一般都不用寫,JDK給我們提供了好多現(xiàn)成方法供我們使用,今天我們就來看看,java中如何使用Comparator進行排序。

1、實現(xiàn)Comparable進行排序

下面我們來看一個簡單的例子:

package org.test;

/**
 * 
* 
* 項目名稱:BianChengXiGuan 
* 類名稱:Student 
* 類描述:學(xué)生類
* 創(chuàng)建人:Mu Xiongxiong 
* 創(chuàng)建時間:2020-10-19 上午8:47:01 
* 修改人:Mu Xiongxiong 
* 修改時間:2020-10-19 上午8:47:01 
* 修改備注:
* 個人博客:https://blog.csdn.net/qq_34137397
* 微信公眾號:雄雄的小課堂
* @version    
*
 */
public class Student implements Comparable<Student>{
  /**
   * 學(xué)生編號
   */
  private int sid;
  
  /**
   * 學(xué)生姓名
   */
  private String name;
  
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public int getSid() {
    return sid;
  }
  public void setSid(int sid) {
    this.sid = sid;
  }
  /**
   * 
       * 構(gòu)造函數(shù) 
       * @discription 
       * @author Mu Xiongxiong 
       * @created 2020-10-19 上午8:47:43 
       * @param sid
       * @param name 
     * 個人博客:https://blog.csdn.net/qq_34137397
     * 微信公眾號:雄雄的小課堂
   */
  public Student(int sid, String name) {
    super();
    this.sid = sid;
    this.name = name;
  }
  /**
   * 
       * 構(gòu)造函數(shù) 
       * @discription 
       * @author Mu Xiongxiong 
       * @created 2020-10-19 上午8:47:48 
     * 個人博客:https://blog.csdn.net/qq_34137397
     * 微信公眾號:雄雄的小課堂
   */
  public Student() {
    super();
  }
  
  //接口中必須要實現(xiàn)的方法
  //按照sid進行排序
  //如果傳過來的sid比本身的sid小的話,返回1,升序
  //如果傳過來的sid比本身的sid大的話,返回-1,降序
  @Override
  public int compareTo(Student o) {
    if(sid>o.sid){
      return 1;
    }else if(sid==o.sid){
      return 0;
    }else{
      return -1;
    }
  }

}

這是一個很簡單的Student實體類,其中對字段的封裝,以及構(gòu)造方法就不在這里說明了。重點看compareTo方法,此方法是Comparable接口中的方法,我們實現(xiàn)了Comparable接口之后必須要實現(xiàn)該方法。要實現(xiàn)升序和降序,肯定少不了比較,那么compareTo方法的作用就在此,用來比較的!

代碼中,compareTo方法中實現(xiàn)的是按照sid進行排序,如果傳過來的sid比本身的sid小的話,返回1,升序。如果傳過來的sid比本身的sid大的話,返回-1,降序。 然后我們寫個測試方法進行測試:

//對集合進行排序
  public static void testSortList(){
    List<Student> stus = new ArrayList<Student>();
    stus.add(new Student(1,"a"));
    stus.add(new Student(4,"d"));
    stus.add(new Student(5,"e"));
    stus.add(new Student(2,"b"));
    stus.add(new Student(3,"c"));
    System.out.println("排序之前:");
    for (Student s : stus) {
      System.out.println(s.getSid()+"---"+s.getName());
    }
    Collections.sort(stus);
    //Collections.sort(stus,new SortName());
    System.out.println("排序之后:\n");
    for (Student s : stus) {
      System.out.println(s.getSid()+"---"+s.getName());
    }
  }

運行結(jié)果如下:

這是升序,如果想要降序排序,簡單的改一下compareTo方法的比較符號即可。按照sid進行排序,比較簡單,那假如現(xiàn)在有這樣的需求:按照姓名(字符)順序降序排序,我們應(yīng)該怎么實現(xiàn)?

2、實現(xiàn)Comparator進行排序

我們看Collections.sort方法,他還有一個重載方法Collections.sort(Listlists,Comparator c);可以接受一個Comparator實現(xiàn)類,我們就可以利用這一點,實現(xiàn)對name進行排序,代碼如下:

package org.test;

import java.util.Comparator;

public class SortName implements Comparator<Student> {

  @Override
  public int compare(Student o,Student o1) {
    return o1.getName().compareTo(o.getName());
  }
}

接著稍微改一下Collections.sort方法,如下:

Collections.sort(stus,new SortName());

運行結(jié)果:

到此,排序完成,最后大家在思考一下,如果name的值為漢字,那么可以按照姓名的首字母倒序排序嗎?

總結(jié)

到此這篇關(guān)于java中實現(xiàn)對象排序的兩種方法的文章就介紹到這了,更多相關(guān)java對象排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++實現(xiàn)掃雷游戲示例講解

    C++實現(xiàn)掃雷游戲示例講解

    這篇文章主要介紹了C++實現(xiàn)掃雷游戲示例講解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Spring AOP實現(xiàn)功能權(quán)限校驗功能的示例代碼

    Spring AOP實現(xiàn)功能權(quán)限校驗功能的示例代碼

    本篇文章主要介紹了Spring AOP實現(xiàn)功能權(quán)限校驗功能的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • springboot+vue項目從第一行代碼到上線部署全流程

    springboot+vue項目從第一行代碼到上線部署全流程

    本文詳細介紹了如何從零開始搭建一個基于Spring Boot和Vue.js的前后端分離項目,并涵蓋項目需求分析、技術(shù)選型、項目結(jié)構(gòu)設(shè)計、前后端交互、部署上線等全過程,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • Redis介紹和使用場景詳解

    Redis介紹和使用場景詳解

    這篇文章主要為大家詳細介紹了Redis介紹和使用場景,需要的朋友可以參考,具體內(nèi)容如下
    2018-04-04
  • Java編程中ArrayList源碼分析

    Java編程中ArrayList源碼分析

    這篇文章主要介紹了Java編程中ArrayList源碼分析,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Java中將bean放入Spring容器中的幾種方式詳解

    Java中將bean放入Spring容器中的幾種方式詳解

    這篇文章主要介紹了Java中將bean放入Spring容器中的幾種方式詳解,在Spring框架中,有多種方式可以將Bean(即對象)放入Spring容器中,今天我們就來詳細說一下這幾種方式,需要的朋友可以參考下
    2023-07-07
  • JAVA 日常開發(fā)中Websocket示例詳解

    JAVA 日常開發(fā)中Websocket示例詳解

    JAVA |日常開發(fā)中Websocket詳解,WebSocket是一種在單個TCP連接上進行全雙工通信的協(xié)議,它在Web應(yīng)用中實現(xiàn)了客戶端與服務(wù)器之間的實時數(shù)據(jù)傳輸,本文將詳細介紹Java開發(fā)中WebSocket的使用,包括基本概念、Java API、使用示例以及注意事項,感興趣的朋友一起看看吧
    2024-12-12
  • Netty分布式pipeline管道異常傳播事件源碼解析

    Netty分布式pipeline管道異常傳播事件源碼解析

    這篇文章主要為大家介紹了Netty分布式pipeline管道異常傳播事件源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • 解決nacos項目啟動報錯:Connection refused: no further informa問題

    解決nacos項目啟動報錯:Connection refused: no further&

    這篇文章主要介紹了解決nacos項目啟動報錯:Connection refused: no further informa問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Java HtmlParse提取標簽中的值操作

    Java HtmlParse提取標簽中的值操作

    這篇文章主要介紹了Java HtmlParse提取標簽中的值操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08

最新評論

察哈| 博客| 海林市| 长丰县| 曲周县| 廉江市| 怀来县| 济源市| 丽江市| 南康市| 延长县| 托克托县| 澎湖县| 柳河县| 鸡泽县| 伊金霍洛旗| 南安市| 桦川县| 依安县| 柏乡县| 镇远县| 安宁市| 淳化县| 南丹县| 田阳县| 赣州市| 和田市| 定襄县| 南川市| 固原市| 若尔盖县| 弥渡县| 丰顺县| 柳林县| 潮安县| 张家港市| 阿尔山市| 商南县| 西峡县| 乐亭县| 天长市|