我有一个ArrayList的狗。如果Fluffy在ArrayList中,我想将其名称更改为Fido。如果它不在ArrayList中,我想添加它,然后将其名称更改为Fido。如何更改一个对象,如果它在一个ArrayList中?
因此,我可以检查Fido是否存在于ArrayList中,但是如何检索它以便我可以进行更改?以下是我最近的一次。我要寻找的线沿线的东西dogs.getElementEqualTo(new Dog("Fido"));
import java.util.ArrayList;
public class Dog {
public static void main(String[] args) {
ArrayList<Dog> dogs = new ArrayList<>();
dogs.add(new Dog("Fido"));
Dog dog = new Dog("Fido");
if (dogs.contains(dog)) {
dog.name = "Fluffy";
}
System.out.println(dogs.get(0).name); //prints Fido
}
String name;
public Dog(String name) {
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Dog)) return false;
Dog dog = (Dog) o;
return !(name != null ? !name.equals(dog.name) : dog.name != null);
}
@Override
public int hashCode() {
return name != null ? name.hashCode() : 0;
}
}
编辑:
我试图改变我的主要方法,这一点,但没有奏效:
ArrayList<Dog> dogs = new ArrayList<>();
dogs.add(new Dog("Fido"));
Dog dog = new Dog("Fido");
if (dogs.contains(dog)) {
dogs.get(dogs.indexOf(dog)).name = "Fluffy";
}
System.out.println(dogs.get(0).name);
该代码的作用是什么?显示输出。 –
只是循环的元素,并检查每一个(或只是直到第一个)。 –
@SotiriosDelimanolis darn。会做。我希望有一个更漂亮的方式,但这将工作。谢谢! – Evorlor