gpt4 book ai didi

java - 使用类似的界面进行 2 级订购

转载 作者:行者123 更新时间:2023-11-30 02:35:59 24 4
gpt4 key购买 nike

我正在尝试为实现可比较接口(interface)的对象列表创建自定义比较。

通过一级比较,这是一个普通的任务,但这一次事情有点复杂。

让我向您介绍详细信息,我有以下对象的列表:

 Person { 
String name;
String gender;
int age;
}

我需要做的第一件事是按名字进行比较(做起来很简单),但是当我有相同的名字时,我需要按年龄进行比较。

请问您愿意帮助解决这个问题吗?

最佳答案

尽管我怀疑这是一个家庭作业问题,但我会帮助你并一路教你。

Class Person implements Comparable<Person>{ 
String name;
String gender;
int age;

@override
int compareTo( Person p2 ){
if (this.name.equals(p2.name)) return 0;
else return Integer.compare(this.age,p2.age);
}

我们在这里做什么:

  1. 在您的 Person 类上实现 Comparable 接口(interface)。我们在这里查看的类型参数是 Person,因为您要将一个人与另一个人进行比较。这使我们能够...
  2. 用我们自己的实现重写 Comparable.compareTo() 方法。
  3. 比较名称 with string.equals(), be careful never to use == for string equality
  4. 如果姓名不同,请比较年龄。由于您使用的是原始数据类型,因此必须使用 Integer.compare,这是比较原始 int 的少数方法之一。

注意,您可以进一步重写 Object.equals() 以获取 Person 对象并比较 person 上的对象相等性,或者您可以将其设置为 this.compareTo(p2) == 0,如 compareTo( ) 如果对象相等,应该返回 0。这不是您的实现方式,并且您在技术上违反了 Comparable 接口(interface)的契约(Contract)

祝你作业顺利。

关于java - 使用类似的界面进行 2 级订购,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43054843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com