我需要知道如何替换一个对象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.
Run Code Online (Sandbox Code Playgroud)
稍后,我将从此数组列表中获取一个对象并进行修改.
Animal modifiedAnimal = new Animal();
animal.setName("Brown Lion");
animal.setId(1);
Run Code Online (Sandbox Code Playgroud)
现在我需要将此Animal对象添加到ArrayList<Animal> a
数组列表中.我需要它来替换Animal
我们命名的前一个对象Lion
.我怎样才能做到这一点 ?
注意:我不知道添加此对象的索引.
如果你真的想取代了Animal
一个全新的列表Animal
,使用List#set
.要使用List#set
,您需要知道Animal
要替换的索引.你可以找到它List#indexOf
.
如果您只想修改集合中已有的动物,则不必对列表执行任何操作,因为列表中存储的是对象的引用,而不是对象的副本.
您必须首先从列表中获取其引用并简单地修改它.像这样:
Integer yourId = 42;
for (Animal a : animalList){
if (a.getId().equals(yourId)){
a.setName("Brown Lion");
//...
break;
}
}
Run Code Online (Sandbox Code Playgroud)
查看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);
Run Code Online (Sandbox Code Playgroud)