替换ArrayList中的对象

时间:2012-12-05 16:49:51

标签: java arraylist

我需要知道如何替换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对象。我怎么能这样做?

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

5 个答案:

答案 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;
    }
}
  1. 通过您的列表循环,直到找到Animal
  2. 更改其属性
  3. 打破外圈

答案 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);