7

我需要知道如何替换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);

现在我需要将此动物对象添加到ArrayList<Animal> a 数组列表中。我需要它来替换Animal我们之前命名的对象Lion。我怎样才能做到这一点 ?

注意:我不知道添加此对象的索引。

4

5 回答 5

7

如果您真的想用全新的替换列表中的,使用. 要使用,您需要知道要替换的索引。你可以用.AnimalAnimalList#setList#setAnimalList#indexOf

如果您只想修改已经在集合中的动物,您不必对列表做任何事情,因为存储在列表中的是对对象的引用,而不是对象的副本。

于 2012-12-05T16:52:42.173 回答
6

您必须首先从列表中获取其引用并简单地对其进行修改。像这样:

Integer yourId = 42;

for (Animal a : animalList){
     if (a.getId().equals(yourId)){
          a.setName("Brown Lion");
          //...
          break;
     }
}
于 2012-12-05T16:52:19.020 回答
2
for(Animal al: a){
    if(al.getName().equals("Lion")){
       al.setName("Brown Lion");
       al.setId(1);
       break;
    }
}
  1. 遍历您的列表,直到找到动物
  2. 改变它的属性
  3. 跳出循环
于 2012-12-05T16:52:32.953 回答
2

查看 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);
于 2012-12-05T16:54:46.913 回答
1

您可以轻松地使用 HashMap。您的键是 id,值是动物对象。

通过使用get方法,您可以获取所需的动物对象并进行修改,然后再次将新动物放在同一个键上。

于 2012-12-05T16:54:29.090 回答