我需要知道如何替换ArrayList<Animal>
中的对象。
我有一个名为ArrayList<Animal>
的数组列表。这个清单只列出了5只动物。
Animal animal = new Animal();
animal.setName("Lion");
animal.setId(1);
ArrayList<Animal> a = new ArrayList<Animal>();
a.put(animal); // likewise i will be adding 5-6 animals here.
稍后,我将从此数组列表中获取一个对象并进行修改。
Animal modifiedAnimal = new Animal();
animal.setName("Brown Lion");
animal.setId(1);
现在我需要将此Animal对象添加到ArrayList<Animal> a
数组列表中。我需要它来替换我们命名为Animal
的前一个Lion
对象。我怎么能这样做?
注意:我不知道添加此对象的索引。
答案 0 :(得分:7)
如果您真的想要使用全新Animal
替换列表中的Animal
,请使用List#set
。要使用List#set
,您需要知道要替换的Animal
的索引。您可以使用List#indexOf
找到该内容。
如果你只想修改已经在集合中的动物,你不必对列表做任何事情,因为列表中存储的是对象的引用,不是对象的副本。
答案 1 :(得分:6)
您必须首先从列表中获取其引用并简单地修改它。像这样:
Integer yourId = 42;
for (Animal a : animalList){
if (a.getId().equals(yourId)){
a.setName("Brown Lion");
//...
break;
}
}
答案 2 :(得分:2)
for(Animal al: a){
if(al.getName().equals("Lion")){
al.setName("Brown Lion");
al.setId(1);
break;
}
}
答案 3 :(得分:1)
您可以轻松地使用HashMap。你的关键是id,值是动物对象。
使用get
方法,您可以获取所需的动物对象并进行修改,然后再将新动物放在相同的键上。
答案 4 :(得分:1)
请查看Bellum的帖子,了解如何使用ArrayList
执行此操作。但是,使用HashMap<String, Animal>
HashMap<String, Animal> animals = new HashMap<String, Animal>();
// ...
Animal animal = new Animal();
animal.setName("Lion");
animal.setId(1);
animals.put(animal.getName(), animal);
// to modify...
Animal lion = animals.remove("Lion"); // no looping, it finds it in constant time
lion.setName("Brown Lion");
animals.put(animal.getName(), animal);