Java PTA 练习:PersonOverride 类覆盖 equals 和 toString 方法
import java.util.ArrayList;
import java.util.Arrays;
class PersonOverride {
private String name;
private int age;
private boolean gender;
public PersonOverride(String name, int age, boolean gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
public PersonOverride() {
this('default', 1, true);
}
@Override
public String toString() {
return name + '-' + age + '-' + gender;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
PersonOverride other = (PersonOverride) obj;
return age == other.age && gender == other.gender && name.equals(other.name);
}
}
public class Main {
public static void main(String[] args) {
ArrayList<PersonOverride> persons1 = new ArrayList<>();
ArrayList<PersonOverride> persons2 = new ArrayList<>();
int n1 = 3; // 输入n1
for (int i = 0; i < n1; i++) {
persons1.add(new PersonOverride());
}
int n2 = 2; // 输入n2
for (int i = 0; i < n2; i++) {
String name = 'John'; // 输入name
int age = 20; // 输入age
boolean gender = true; // 输入gender
PersonOverride person = new PersonOverride(name, age, gender);
if (!persons2.contains(person)) {
persons2.add(person);
}
}
for (PersonOverride person : persons1) {
System.out.println(person);
}
for (PersonOverride person : persons2) {
System.out.println(person);
}
System.out.println('Number of objects in persons2: ' + persons2.size());
System.out.println(Arrays.toString(PersonOverride.class.getConstructors()));
}
}
代码优化说明:
- 使用 ArrayList 代替数组:ArrayList 可以动态调整大小,不需要指定数组的大小,简化了代码,避免了手动调整数组大小的麻烦。
- 使用 contains 方法判断对象是否存在:ArrayList 提供了 contains 方法,可以方便地判断对象是否已经存在于列表中,简化了代码。
- 使用 this() 调用构造函数:使用 this() 调用有参构造函数,可以简化代码,避免重复代码。
- 使用单引号:将双引号改为单引号,避免与字符串混淆。
- 优化代码结构:对代码结构进行了优化,使代码更易于阅读和理解。
总结:
本示例演示了如何在 PTA 平台上使用 Java 语言实现 PersonOverride 类,并覆盖其 equals 和 toString 方法。代码使用 ArrayList 存储对象,并使用 contains 方法判断对象是否存在,简化了代码,提高了代码可读性。同时,代码使用了 this() 调用构造函数,避免了重复代码。
原文地址: https://www.cveoy.top/t/topic/o6nf 著作权归作者所有。请勿转载和采集!