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()));
    }
}

代码优化说明:

  1. 使用 ArrayList 代替数组:ArrayList 可以动态调整大小,不需要指定数组的大小,简化了代码,避免了手动调整数组大小的麻烦。
  2. 使用 contains 方法判断对象是否存在:ArrayList 提供了 contains 方法,可以方便地判断对象是否已经存在于列表中,简化了代码。
  3. 使用 this() 调用构造函数:使用 this() 调用有参构造函数,可以简化代码,避免重复代码。
  4. 使用单引号:将双引号改为单引号,避免与字符串混淆。
  5. 优化代码结构:对代码结构进行了优化,使代码更易于阅读和理解。

总结:

本示例演示了如何在 PTA 平台上使用 Java 语言实现 PersonOverride 类,并覆盖其 equals 和 toString 方法。代码使用 ArrayList 存储对象,并使用 contains 方法判断对象是否存在,简化了代码,提高了代码可读性。同时,代码使用了 this() 调用构造函数,避免了重复代码。

Java PTA 练习:PersonOverride 类覆盖 equals 和 toString 方法

原文地址: https://www.cveoy.top/t/topic/o6nf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录