我需要知道如何替换一个对象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)
| 归档时间: |
|
| 查看次数: |
11081 次 |
| 最近记录: |