浅谈java自定义中类两个对象的比较

这篇具有很好参考价值的文章主要介绍了浅谈java自定义中类两个对象的比较。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

浅谈java自定义中类两个对象的比较,学习笔记,java,开发语言,学习,学习方法,程序人生,intellij-idea

目录

实现比较两个对象是否相同

1.前置代码

1.学生类

2.示例 

3.输出 

4.原因

2.那么我们要怎么做呢?

1.对Student类中重新实现quals方法(即对equals方法重写) 

2.完整代码如下:

3.具体操作

4.演示

1.示例

2.输出

3.原因 

实现比较两个对象的大小 

第一种: 用接口的方式实现,实现一个Comparable接口,并指定比较的类型

1.演示代码

2.示例 

3.代码输出结果

第二种: 使用比较器(博主推荐使用!!!)

1.演示代码

(1)名字比较器

(2)年龄比较器

2.示例

3.代码输出结果

完结撒花✿✿ヽ(°▽°)ノ✿


实现比较两个对象是否相同

1.前置代码

1.学生类

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

2.示例 

  Student student1 = new Student("fly",19);
  Student student2 = new Student("fly",19);
  System.out.println(student2==student1);

3.输出 

输出: false ==//默认比较的是两个引用的地址

4.原因

原因:所有类默认继承于object,所以student1调用的是object的equals
  equals的源码

public boolean equals(Object obj) {
    return (this == obj);
}

obj:obj是参数
this:随调equals谁是this
return (this == obj);
等价于return students1 == students2

2.那么我们要怎么做呢?


1.对Student类中重新实现quals方法(即对equals方法重写) 

	//对equals方法进行重写(即自定义的equals方法)
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);
    }
    //实现了比较时当年龄和名字相同的情况下,认为是同一个对象

2.完整代码如下:

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

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);
    }
}

3.具体操作

在IDEA右键generate(快捷键:Alt+Insert),
再选择equals() and hashCode(),一路next就ok了

4.演示

1.示例

 System.out.println(student1.equals(student2));

2.输出

输出:true

3.原因 

当代码运行的时候,就会使用自定义的equals方法
实现了比较时当两个对象年龄和名字相同的情况下,会被认为是同一个对象


实现比较两个对象的大小 

第一种: 用接口的方式实现,实现一个Comparable接口,并指定比较的类型

1.演示代码

class Student implements Comparable<Student>{
   String name;
   int age;
   public Student(String name,int age){
       this.name=name;
       this.age=age;
   }
   @Override
   public int compareTo(Student o) {
       return this.age-o.age;
   }
}

2.示例 

 	Student student1 = new Student("初一",19)
    Student student2 = new Student("初三",21);
    System.out.println(student1.equals(student2));//输出: -2
    System.out.println(student1.compareTo(student2));//输出: 2
    Student student3 = new Student("初五",19);
    System.out.println(student1.compareTo(student3));//输出: 0

3.代码输出结果

浅谈java自定义中类两个对象的比较,学习笔记,java,开发语言,学习,学习方法,程序人生,intellij-idea

第二种: 使用比较器(博主推荐使用!!!)

1.演示代码

(1)名字比较器
class NameComparator implements Comparator<Student> {
    @Override
    public int compare(Student o1, Student o2) {
        return o1.name.compareTo(o2.name);
    }
}
(2)年龄比较器
class AgeComparator implements Comparator<Student> {
    @Override
    public int compare(Student o1, Student o2) {
        return o1.age-(o2.age);
    }
}

2.示例

    Student student1 = new Student("初一",19);
    Student student2 = new Student("初三",21);
    Student student3 = new Student("初一",21);
    NameComparator nameComparator = new NameComparator();
    int retName = nameComparator.compare(student1, student3);
    System.out.println(retName);//输出: 0
    AgeComparator ageComparator = new AgeComparator();
    int retAge=ageComparator.compare(student2,student3);
    System.out.println(retAge);//输出: 0
    System.out.println(ageComparator.compare(student1, student3));//输出: -2
    System.out.println(ageComparator.compare(student3, student1));//输出: 2

3.代码输出结果

浅谈java自定义中类两个对象的比较,学习笔记,java,开发语言,学习,学习方法,程序人生,intellij-idea文章来源地址https://www.toymoban.com/news/detail-709429.html

完结撒花✿✿ヽ(°▽°)ノ✿

到了这里,关于浅谈java自定义中类两个对象的比较的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 重写 equals 方法,实现比较两个对象值是否相等

    == 用于比较值的引用地址是否一致,而 equals 用于比较值的内容是否一致,下面我们来比较一下这两个值是否相同 可以发现它的值是相同的 下面我们来对两个对象的值进行比较 可以发现值的内容确实相同,但比较的结果是 false 其实在 object 中的 equals 底层使用的还是 == 进行

    2024年02月07日
    浏览(64)
  • Linux shell编程学习笔记44:编写一个脚本,将md5sum命令执行结果保存到变量中,进而比较两个文件内容是否相同

    在  Linux shell编程学习笔记42:md5sum https://blog.csdn.net/Purpleendurer/article/details/137125672?spm=1001.2014.3001.5501 中,我们提到编写一个在Linux系统下比较两个文件内容是否相同的脚本。 基本思路是: 其中有两个难点: 1.文件的md5值的获取 2.md5值的比较 对于第1个难点,我们的解决办法是

    2024年04月10日
    浏览(75)
  • Kubernetes学习笔记-kubernetes应用扩展(1)-自定义API对象20230622

    1、CustomResourceDefinitions介绍 开发者只需要只需向kubernetes api服务器提交CRD对象,即可定义新的资源类型。成功提交CRD之后,就能通过API服务器提交JSON清单或者YAML清单的方式创建自定义资源,以及其他kubernetes资源实例 创建一个CRD对象 website-crd.yaml apiVersion:apiextensions.k8s.io/v1

    2024年02月10日
    浏览(38)
  • Java如何比较两个日期的先后顺序

    在 Java 中,你可以使用 `java.util.Date` 或 `java.time.LocalDate` 类来比较两个日期的先后顺序。 以下是使用 `java.util.Date` 类比较两个日期的先后顺序的示例代码: ```java import java.util.Date; public class DateComparisonExample {     public static void main(String[] args) {         Date date1 = new Date(); // 第

    2024年02月13日
    浏览(46)
  • java 两个list比较,删除相同的元素

    概述 在Java开发中,经常需要比较两个List并删除相同的元素。本文将介绍整个流程,并提供相应的代码示例,帮助新手开发者完成这个任务。 流程 下面是比较两个List并删除相同元素的流程: 代码示例 创建两个List 我们首先需要创建两个List对象,分别代表待比较的两个列表

    2024年02月07日
    浏览(45)
  • 【C++】STL 算法 ⑧ ( 预定义函数对象 | 预定义函数对象组成 | 预定义函数对象分类 | 预定义 算术运算符 函数对象 | 预定义 比较运算符 函数对象 | 预定义 逻辑运算符 函数对象 )

    C++ 的 标准模板库 ( STL , Standard Template Library ) 中 , 预定义了一系列的 \\\" 函数对象 “ , 又称为 ” 仿函数 Functors \\\" ; 这些 \\\" 预定义函数对象 \\\" 在 STL 算法中 , 可以 作为 算法的参数 , 定制某些参数的行为 , 如 : for_each 遍历算法中 , 传入 \\\" 一元函数对象 \\\" , 用于执行单个元素的遍历

    2024年01月16日
    浏览(69)
  • 学习C++:C++进阶(六)如何在C++代码中调用python类,实例化python中类的对象,如何将conda中的深度学习环境导入C++项目中

    目录 1.应用场景 2.场景:利用maskrcnn深度学习网络实现语义分割 3.CMake配置python解释器

    2023年04月22日
    浏览(42)
  • Java学习笔记(三):面向对象

    类(class)和对象(object, 也被称为实例 instance)是 java面向对象的核心,可以把类理解成某种概念,对象理解为一个具体存在的实体。也就是说,日常说的人,其实都是人的实例,而不是人类。 定义类的简单语法: 修饰符可以是 public、final、abstract,或者完全省略。 对一个类而

    2024年02月11日
    浏览(50)
  • Java面向对象学习笔记-3

    本文将介绍Java编程中的一些基本概念和用法,包括类、接口、抽象类、继承、多态和组合等。通过代码示例,我们将深入探讨这些概念,帮助读者更好地理解如何使用Java进行面向对象编程。 Java面向对象学习笔记-1 Java面向对象学习笔记-2 我们首先来看纸张和墨盒类,它们是

    2024年02月09日
    浏览(39)
  • Java面向对象学习笔记-4

    当编写Java程序时,了解如何处理异常是至关重要的。异常处理可以帮助我们在程序执行过程中处理各种错误情况,以确保程序能够正常运行或者 graceful 地退出。本文将介绍一些关于Java异常处理的基本概念和最佳实践,包括自定义异常类、用户输入的处理、异常捕获与处理、

    2024年02月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包