2015-06-07 5 views
2

У меня есть абстрактный класс животных и другие подклассы, такие как рептилии, которые далее унаследованы.
Я создал массив для инициализации животного, как показано ниже:Хранение объектов разных классов внутри ArrayList

public void initializeArray() 
{ 
    zooAnimal = new Animal[10];   // We will make 10 animals: 

    // Polymorphism allows us to assign an object of a subclass to an 
    // object reference to a superclass/ancestor. 
    zooAnimal[0] = new Kookaburra("Kelly",5);  // A 5kg kookaburra 
    zooAnimal[1] = new Lizard("Lizzy",2,3);   // A 2kg, 3-year-old lizard 
    zooAnimal[2] = new Crocodile("Colin", 200, 7);  // a 7-yo 200kg croc. 
    zooAnimal[3] = new Rosella("Katie", 2, "Crimson");  // a 2-yo Crimson Rosella 
    zooAnimal[4] = new Rosella("Rosie", 4, "Green");  // a 4-yo Green Rosella 
    zooAnimal[5] = new Snake("Boris","Brown",15,3); // A Brown Snake, 15kg, 3 years 
    zooAnimal[7] = new Snake("Rita","Rattle",22,1); // A Rattle Snake, 22kg, 1 years 
    zooAnimal[6] = new Dolphin("Dolly", 142, 6); // A heavy, 6-yo dolphin. 
    zooAnimal[8] = new Kookaburra("Kenneth",4);  // A 4kg kookaburra 
    zooAnimal[9] = new Rosella("Yippy", 1, "Yellow");  // a 1-yo Yellow Rosella 
} 

Но я хочу, чтобы достичь того же с помощью ArrayList вместо массива.
Как это можно сделать?

Мой класс животных и подклассы выглядеть следующим образом:

класс Animal

public abstract class Animal 
{ 
    private int weight; 
    private int age; 
    private String name; 

    protected Animal(String name, int weight, int age) 
    { 
     this.name = name; 
     this.weight = weight; 
     this.age = age; 
    } 

    public final int getWeight() { return weight; } 

    public final int getAge() { return age; } 

    public final String getName() { return name; } 

    public abstract void makeNoise();  // Must be implemented by a subclass 

    /** Provides a default description of the animal. 
    * Sub-classes should override. */ 
    public String toString() 
    { 
     return "Animal Object: [name=" + name + ", age=" + age + ", weight=" + weight + "]"; 
    } 
} 

И у меня есть Bird класс (подкласс Animal класса), а Kookabura класса (суб класс Animal), Reptile класс (подкласс класса Animal) и подкласс Lizard (подкласс класса Reptile) и т.д. !!

+0

'Список zooList = new ArrayList() <>; zooList.add (new AnimalSubclss (...) ';' –

+0

Большое спасибо. Просто другой вопрос позже я могу использовать этот arraylist для hashmap, как private Map > placeMap = new HashMap <>(); и placeMap (имя, zoolist), что-то вроде этого –

ответ

2

Вы можете сделать так:

public void initializeList() { 
     List<Animal> animals = new ArrayList<Animal>(); 
     animals.add(new Kookaburra("Kelly",5)); 
     animals.add(new Lizard("Lizzy",2,3)); 
     animals.add(new Crocodile("Colin", 200, 7)); 
     animals.add(new Rosella("Katie", 2, "Crimson")); 
     animals.add(new Rosella("Rosie", 4, "Green")); 
     animals.add(new Snake("Boris","Brown",15,3)); 
     animals.add(new Snake("Rita","Rattle",22,1)); 
     animals.add(new Dolphin("Dolly", 142, 6)); 
     animals.add(new Kookaburra("Kenneth",4)); 
     animals.add(new Rosella("Yippy", 1, "Yellow")); 
    } 
3

Вам просто нужно объявить ArrayList<Animal>, и использовать метод add(Animal) вместо заданий (полиморфизм позволяет сделать это):

private ArrayList<Animal> zooAnimals; 

public void initializeArray() { 
    // this 10 is optional, but it's good to specify it 
    // when you know the final length of your list in advance 
    zooAnimals = new ArrayList<>(10); 

    zooAnimals.add(new Kookaburra("Kelly", 5)); // A 5kg kookaburra 
    zooAnimals.add(new Lizard("Lizzy", 2, 3)); // A 2kg, 3-year-old lizard 
    zooAnimals.add(new Crocodile("Colin", 200, 7)); // a 7-yo 200kg croc. 
    zooAnimals.add(new Rosella("Katie", 2, "Crimson")); // a 2-yo Crimson Rosella 
    zooAnimals.add(new Rosella("Rosie", 4, "Green")); // a 4-yo Green Rosella 
    zooAnimals.add(new Snake("Boris", "Brown", 15, 3)); // A Brown Snake, 15kg, 3 years 
    zooAnimals.add(new Snake("Rita", "Rattle", 22, 1)); // A Rattle Snake, 22kg, 1 years 
    zooAnimals.add(new Dolphin("Dolly", 142, 6)); // A heavy, 6-yo dolphin. 
    zooAnimals.add(new Kookaburra("Kenneth", 4)); // A 4kg kookaburra 
    zooAnimals.add(new Rosella("Yippy", 1, "Yellow")); // a 1-yo Yellow Rosella 
} 
+0

Могу ли я использовать этот arraylist для hashmap, как private Map > placeMap = new HashMap <>(); и placeMap (имя, zoolist), что-то вроде этого –

+0

Да , это вполне возможно. Вы можете попробовать это, используя 'yourMap.put (name, zoolist);', где 'zoolist' - это список, указанный выше. – Joffrey

0

java API предоставляет специальный класс для хранения и управления группой объектов. Один такой класс ArrayList

Обратите внимание, что Список_массивов класс находится в java.util.ArrayList

Создайте ArrayList, как и любые объекты.

import java.util.ArrayList; 
//.. 
ArrayList ajay = new ArrayList(); 

Здесь

  • ArrayList -> Класс

  • Аджай -> объект

Вы можете дополнительно указать емкость и тип объекта, ArrayList будет держаться :

ArrayList ajay<String> = new ArrayList<String>(10); 

ArrayList предоставляет различные методы для манипулирования objects.The надстройку() метод добавляет объект в список и список удалить() метод удаляет объект из списка.

Пример кода:

import java.util.ArrayList; 

public class MyClass { 
    public static void main(String[ ] args) { 
     ArrayList<String> ajay = new ArrayList<String>(); 
     ajay.add("Red"); 
     ajay.add("Blue"); 
     ajay.add("Green"); 
     ajay.add("Orange"); 
     ajay.remove("Green"); 

     System.out.println(colors); 
} 
} 

Я рекомендую вам для решения Вашего кодекса был,

public void initializeList() { 
     List<Animal> animals = new ArrayList<Animal>(); 
     animals.add(new Kookaburra("Kelly",5)); 
     animals.add(new Lizard("Lizzy",2,3)); 
     animals.add(new Crocodile("Colin", 200, 7)); 
     animals.add(new Rosella("Katie", 2, "Crimson")); 
     animals.add(new Rosella("Rosie", 4, "Green")); 
     animals.add(new Snake("Boris","Brown",15,3)); 
     animals.add(new Snake("Rita","Rattle",22,1)); 
     animals.add(new Dolphin("Dolly", 142, 6)); 
     animals.add(new Kookaburra("Kenneth",4)); 
     animals.add(new Rosella("Hippy",1,"Yellow"); 
} 

В коде животных является класс и животных является объектом класса ..

Смежные вопросы