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

java使用compareTo實(shí)現(xiàn)一個(gè)類的對(duì)象之間比較大小操作

 更新時(shí)間:2020年09月16日 09:40:31   作者:領(lǐng)頭陽(yáng)_  
這篇文章主要介紹了java使用compareTo實(shí)現(xiàn)一個(gè)類的對(duì)象之間比較大小操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

首先定義一個(gè)對(duì)象,注意這個(gè)對(duì)象必須實(shí)現(xiàn)Comparable接口,并重寫這個(gè)接口的compareTo方法

package cn.demo;
 
public class Student implements Comparable{
 private int number=0;  //學(xué)號(hào)
 private String name="";  //學(xué)生姓名
 private String gender="";  //性別
 public int getNumber(){
 return number;
 }
 public void setNumber(int number){
 this.number=number;
 }
 public String getName(){
 return name;
 }
 public void setName(String name){
 this.name=name;
 }
 public String getGender(){
 return gender;
 }
 public void setGender(String gender){
 this.gender=gender;
 }
 
 public int compareTo(Object obj){
 Student student=(Student)obj;
 if(this.number==student.number){ 
  return 0;  //如果學(xué)號(hào)相同,那么兩者就是相等的
 }else if(this.number>student.getNumber()){ 
  return 1;  //如果這個(gè)學(xué)生的學(xué)號(hào)大于傳入學(xué)生的學(xué)號(hào)
 }else{ 
  return -1;  //如果這個(gè)學(xué)生的學(xué)號(hào)小于傳入學(xué)生的學(xué)號(hào)
 }
 }
}

在上面的重寫方法中標(biāo)紅的地方,如果是小于號(hào),則是按照降序排列,但是在我貼上去的代碼,則是按升序排列

接下來就是測(cè)試類了:

package cn.demo;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
 
public class Test {
 public static void main(String[] args) {
 Student student1=new Student();
 student1.setNumber(5);
 Student student2=new Student();
 student2.setNumber(2);
 Student student3=new Student();
 student3.setNumber(1);
 Student student4=new Student();
 student4.setNumber(4);
 ArrayList<Student> list=new ArrayList<Student>();
 list.add(student1);
 list.add(student2);
 list.add(student3);
 list.add(student4);
 System.out.println("-------排序前-------");
 Iterator<Student> iterator=list.iterator();
 while(iterator.hasNext()){
  Student stu=iterator.next();
  System.out.println(stu.getNumber());
 }
 //使用Collections的sort方法對(duì)list進(jìn)行排序
 System.out.println("-------排序后-------");
 Collections.sort(list); 
 iterator=list.iterator();
 while(iterator.hasNext()){
  Student stu=iterator.next();
  System.out.println(stu.getNumber());
 } 
 
 }
}

如上所示,可以直接使用collections的sort方法進(jìn)行排序

-------排序前-------
5
2
1
4
-------排序后-------
5
4
2
1

補(bǔ)充知識(shí):【JAVA】用Comparable接口學(xué)生的成績(jī)做降序排序!請(qǐng)正確指定泛型;用Comparator實(shí)現(xiàn)按照姓名排序,請(qǐng)正確指定泛型!

創(chuàng)建四個(gè)學(xué)生信息,分別包含姓名(String) , 年齡(int) ,分?jǐn)?shù)(double)

(1)用Comparable接口對(duì)下列四位同學(xué)的成績(jī)做降序排序, 如果成績(jī)一樣,那在成績(jī)排序的基礎(chǔ)上按照年齡由小到大排序,請(qǐng)正確指定泛型;

(2)用Comparator實(shí)現(xiàn)按照姓名排序,請(qǐng)正確指定泛型。

//定義學(xué)生類,并實(shí)現(xiàn)Comparable接口<定義Student類型>
public class Student implements Comparable<Student>{

  private String name;
  private int age;
  private double grade;

  public Student() {
  }

  public Student(String name, int age, double grade) {
    this.name = name;
    this.age = age;
    this.grade = grade;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public int getAge() {
    return age;
  }

  public void setAge(int age) {
    this.age = age;
  }

  public double getGrade() {
    return grade;
  }

  public void setGrade(double grade) {
    this.grade = grade;
  }

  @Override
  public String toString() {
    return "Student [姓名 :" + name +
        " 年齡 :" + age +
        " 分?jǐn)?shù)" + grade + "]";
  }


  /**
   * 用Comparable接口對(duì)下列四位同學(xué)的成績(jī)做降序排序,
   * 如果成績(jī)一樣,那在成績(jī)排序的基礎(chǔ)上按照年齡由小到大排序。請(qǐng)正確指定泛型
   * @param o
   * @return
   */
  @Override
  public int compareTo(Student o) {
    if(Double.compare(this.getGrade() , o.getGrade()) != 0){
      if(Double.compare(this.getGrade() , o.getGrade()) > 0){
        return 1;
      }else {
        return -1;
      }
    }
    return this.getAge() - o.getAge();
  }
}

*定義Student類,聲明基本的屬性,方法及完成對(duì)Comparable接口的實(shí)現(xiàn),實(shí)現(xiàn)“對(duì)成績(jī)實(shí)現(xiàn)降序,如果成績(jī)一樣,在成績(jī)排序的基礎(chǔ)上按照年齡由大到小的排序”的結(jié)果。

public class Task {

  public static void main(String[] args) {

 //定義四個(gè)學(xué)生對(duì)象
    Student[] s1 = new Student[4];
    s1[0] = new Student("liusan" , 20 , 90.0);
    s1[1] = new Student("lisi" , 22 , 90.0);
    s1[2] = new Student("wangwu" , 20 , 99.0);
    s1[3] = new Student("sunliu" , 22 , 100.0);

    Arrays.sort(s1);
    System.out.println(Arrays.toString(s1));

    System.out.println("==================");

    //用Comparator實(shí)現(xiàn)按照姓名排序,請(qǐng)正確指定泛型
    Arrays.sort(s1, new Comparator<Student>() {
      @Override
      public int compare(Student o1, Student o2) {
        return o1.getName().compareTo(o2.getName());
      }
    });

    System.out.println(Arrays.toString(s1));
  }
}

以上這篇java使用compareTo實(shí)現(xiàn)一個(gè)類的對(duì)象之間比較大小操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 在SpringBoot中使用HATEOAS的方法

    在SpringBoot中使用HATEOAS的方法

    這篇文章主要介紹了在SpringBoot中使用HATEOAS的方法,HATEOAS是實(shí)現(xiàn)REST規(guī)范的一種原則,通過遵循HATEOAS規(guī)范,可以解決我們實(shí)際代碼實(shí)現(xiàn)的各種個(gè)問題,下文更多相關(guān)介紹,需要的小伙伴可以參考一下
    2022-05-05
  • springboot集成druid連接池配置的方法

    springboot集成druid連接池配置的方法

    這篇文章主要介紹了springboot集成druid連接池配置的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Java switch使用原理及實(shí)例解析

    Java switch使用原理及實(shí)例解析

    這篇文章主要介紹了Java switch使用及實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • jdk7 中HashMap的知識(shí)點(diǎn)總結(jié)

    jdk7 中HashMap的知識(shí)點(diǎn)總結(jié)

    HashMap的原理是老生常談了,不作仔細(xì)解說。一句話概括為HashMap是一個(gè)散列表,它存儲(chǔ)的內(nèi)容是鍵值對(duì)(key-value)映射。這篇文章主要總結(jié)了關(guān)于jdk7 中HashMap的知識(shí)點(diǎn),需要的朋友可以參考借鑒,一起來看看吧。
    2017-01-01
  • 新版Android?Studio修改jdk版本的簡(jiǎn)單步驟

    新版Android?Studio修改jdk版本的簡(jiǎn)單步驟

    這篇文章主要介紹了新版Android?Studio修改jdk版本的簡(jiǎn)單步驟,升級(jí)Android?Studio后,JDK版本設(shè)置選項(xiàng)消失,可以通過Settings面板進(jìn)入Gradle設(shè)置,修改GradleJDK路徑來解決問題,需要的朋友可以參考下
    2025-03-03
  • java Class.getSimpleName() 詳解及用法

    java Class.getSimpleName() 詳解及用法

    這篇文章主要介紹了java Class.getSimpleName() 詳解及用法的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 通過代碼實(shí)例深入解析Java重寫和重載

    通過代碼實(shí)例深入解析Java重寫和重載

    這篇文章主要介紹了通過代碼實(shí)例深入解析Java重寫和重載,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • SpringBoot啟動(dòng)時(shí)執(zhí)行初始化操作的幾種方式

    SpringBoot啟動(dòng)時(shí)執(zhí)行初始化操作的幾種方式

    項(xiàng)目中,經(jīng)常需要在啟動(dòng)過程中初始化一些數(shù)據(jù),如從數(shù)據(jù)庫(kù)讀取一些配置初始化,或從數(shù)據(jù)庫(kù)讀取一些熱點(diǎn)數(shù)據(jù)到redis進(jìn)行初始化緩存,本文給大家介紹了SpringBoot啟動(dòng)時(shí)執(zhí)行初始化操作的幾種方式的相關(guān)資料,需要的朋友可以參考下
    2024-05-05
  • 淺談Java獲得多線程的返回結(jié)果方式(3種)

    淺談Java獲得多線程的返回結(jié)果方式(3種)

    這篇文章主要介紹了淺談Java獲得多線程的返回結(jié)果方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 詳解Java中Iterable與Iterator用法

    詳解Java中Iterable與Iterator用法

    在本文中小編給大家分享了關(guān)于Java中Iterable與Iterator的用法知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2018-10-10

最新評(píng)論

海晏县| 清水县| 大荔县| 奉新县| 柳江县| 长宁县| 长宁县| 上蔡县| 南汇区| 贵州省| 五家渠市| 云霄县| 竹溪县| 萝北县| 金秀| 临泉县| 平遥县| 彰化市| 阳江市| 梅河口市| 南康市| 文昌市| 沽源县| 清新县| 青海省| 广德县| 嘉禾县| 常宁市| 皋兰县| 和平县| 汨罗市| 上蔡县| 龙山县| 巴东县| 于田县| 会同县| 阿拉尔市| 阿坝| 蒙城县| 阜阳市| 天峻县|