以下是一个比较两个对象数组并赋值的解决方法的代码示例:
public class ObjectArrayComparison {
public static void main(String[] args) {
// 定义两个对象数组
Person[] array1 = new Person[3];
array1[0] = new Person("Alice", 20);
array1[1] = new Person("Bob", 25);
array1[2] = new Person("Charlie", 30);
Person[] array2 = new Person[3];
array2[0] = new Person("Alice", 22);
array2[1] = new Person("Bob", 25);
array2[2] = new Person("David", 28);
// 比较两个对象数组并赋值
for (int i = 0; i < array1.length; i++) {
if (array1[i].equals(array2[i])) {
array1[i].setAge(array2[i].getAge());
}
}
// 输出更新后的对象数组1
for (Person person : array1) {
System.out.println(person.getName() + " - " + person.getAge());
}
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Person person = (Person) obj;
return age == person.age && Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
在这个示例中,我们定义了一个Person
类表示一个人,包含姓名和年龄属性。我们创建了两个对象数组array1
和array2
,并将不同的Person
对象赋值给它们。
然后,我们使用一个循环来比较array1
和array2
中对应位置的元素。如果两个元素相等(通过equals
方法比较),则将array1
中对应位置的元素的年龄更新为array2
中对应位置元素的年龄。
最后,我们输出更新后的array1
中的对象信息,以验证赋值是否成功。
请注意,我们在Person
类中重写了equals
和hashCode
方法,以便正确比较两个Person
对象的相等性。这是必要的,否则默认的equals
方法会比较对象的引用而不是属性值。