欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

首先定義一個(gè)對(duì)象,注意這個(gè)對(duì)象必須實(shí)現(xiàn)Comparable接口,并重寫(xiě)這個(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)
 }
 }
}

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

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

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é)生類(lèi),并實(shí)現(xiàn)Comparable接口<定義Student類(lèi)型>
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類(lèi),聲明基本的屬性,方法及完成對(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è)類(lèi)的對(duì)象之間比較大小操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringCloud2020.0.x版UnderTow AccessLog相關(guān)配置簡(jiǎn)介

    SpringCloud2020.0.x版UnderTow AccessLog相關(guān)配置簡(jiǎn)介

    本文詳細(xì)介紹了SpringCloud中AccessLog的相關(guān)配置,我們可以根據(jù)文中的相關(guān)數(shù)據(jù)配置出所需的AccessLog的信息以及格式,感興趣的小伙伴可以參考一下
    2021-08-08
  • Spring MVC 文件上傳下載的實(shí)例

    Spring MVC 文件上傳下載的實(shí)例

    本篇文章主要介紹了Spring MVC 文件上傳下載的實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • java 父類(lèi)子類(lèi)有同名方法時(shí)如何調(diào)用的實(shí)現(xiàn)

    java 父類(lèi)子類(lèi)有同名方法時(shí)如何調(diào)用的實(shí)現(xiàn)

    這篇文章主要介紹了java 父類(lèi)子類(lèi)有同名方法時(shí)如何調(diào)用的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • java開(kāi)發(fā)CPU流水線與指令亂序執(zhí)行詳解

    java開(kāi)發(fā)CPU流水線與指令亂序執(zhí)行詳解

    這篇文章主要為大家介紹了java開(kāi)發(fā)CPU流水線與指令亂序執(zhí)行詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Java ExecutorService四種線程池使用詳解

    Java ExecutorService四種線程池使用詳解

    這篇文章主要介紹了Java ExecutorService四種線程池使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • java實(shí)戰(zhàn)之桌球小游戲

    java實(shí)戰(zhàn)之桌球小游戲

    這篇文章主要為大家詳細(xì)介紹了java實(shí)戰(zhàn)之桌球小游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • SpringMVC Restful api接口實(shí)現(xiàn)的代碼

    SpringMVC Restful api接口實(shí)現(xiàn)的代碼

    本篇文章主要介紹了SpringMVC Restful api接口實(shí)現(xiàn)的代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • Java 中的抽象介紹

    Java 中的抽象介紹

    這篇文章主要介紹了Java 中的抽象,數(shù)據(jù)抽象是一種僅向用戶(hù)顯示基本細(xì)節(jié)的屬性。不向用戶(hù)顯示瑣碎或非必需的單元,下面文章Java抽象詳細(xì)內(nèi)容,需要的朋友可以參考一下
    2021-12-12
  • 使用Postman傳遞arraylist數(shù)據(jù)給springboot方式

    使用Postman傳遞arraylist數(shù)據(jù)給springboot方式

    這篇文章主要介紹了使用Postman傳遞arraylist數(shù)據(jù)給springboot方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java?@Validated遇到的大坑與處理

    Java?@Validated遇到的大坑與處理

    這篇文章主要介紹了Java?@Validated遇到的大坑與處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12

最新評(píng)論