2

I have a abstract animal class and other subclass like reptiles which is further inherited.
I have created array to initialize the animal as shown below:

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
}

But I want to achieve the same using an ArrayList instead of array.
How this can be done?

My Animal class and sub-classes look like this:

Animal class

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 + "]";
    }
}

And I have a Bird class (sub-class of Animal class), a Kookabura class (sub-class of Animal), Reptile class (sub-class of Animal class) and a Lizard subclass (sub-class of Reptile class) and so on!!

2
  • List<Animal> zooList = new ArrayList()<>; zooList.add(new AnimalSubclss(...);` Commented Jun 7, 2015 at 4:15
  • Thank you very much ..just another question later can i use this arraylist to hashmap like private Map<String, ArrayList<zoolist>> placeMap = new HashMap<>(); and placeMap(name,zoolist); something like that Commented Jun 7, 2015 at 4:25

3 Answers 3

3

You just need to declare an ArrayList<Animal>, and use the add(Animal) method instead of assignments (polimorphism allows you to do so):

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
}
Sign up to request clarification or add additional context in comments.

2 Comments

can i use this arraylist to hashmap like private Map<String, ArrayList<zoolist>> placeMap = new HashMap<>(); and placeMap(name,zoolist); something like that
Yes, it is perfectly possible. You can try that indeed, using yourMap.put(name, zoolist);, where zoolist is a list declared as above.
2

You can do like this:

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"));
    }

Comments

0

The java API provides special class to store and manipulate group of objects. One Such Class is Arraylist

Note that Arraylist class is in java.util.ArrayList

Create an ArrayList as you would any objects.

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

Here

  • ArrayList -> Class

  • ajay -> object

You can optionally specify the capacity and type of object the ArrayList will hold on:

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

The ArrayList provides various methods for manipulating objects.The add() method adds object to list and The remove() method removes object from the list.

Sample code:

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);
}
}

I recommend you for the Solution of your Code has been,

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");
}

In your Code,Animal is a class and animals is an object of a class..

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.