7

にあるオブジェクトを置き換える方法を知る必要がありますArrayList<Animal>

という配列リストがありArrayList<Animal>ます。このリストには、initにリストされている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

でこれを行う方法については、ベラムの投稿を参照してください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 に答える