Practical Coding in Java

Learn to write and validate your own code

Darren Kessner, PhD

(revised January 9, 2026)

Previous: 8. Lists of objects

Animals

//
// Animal.java
//


public class Animal
{
    public Animal(String name, String type, int age, String color)
    {
        this.name = name;
        this.type = type;
        this.age = age;
        this.color = color;
    }

    // public accessor functions
    public String getName() { return name; }
    public String getType() {return type;}
    public int getAge() {return age;}
    public String getColor() {return color;}

    // private variables
    private String name;
    private String type;
    private int age;
    private String color;


    public static void main(String[] args)
    {
        Animal gadget = new Animal("Gadget", "cat", 5, "black and white");

        System.out.println(gadget.getName() + " is a " +
                           gadget.getAge() + " year old " +
                           gadget.getColor() + " " +
                           gadget.getType() + ".");
    }
}
//
// Zoo.java
//


import java.util.*;


public class Zoo
{
    // print stuff

    public static void printAnimals(ArrayList<Animal> animals)
    {
        for (Animal a : animals)
        {
            System.out.println(a.getName() + " is a " + 
                a.getColor() + " " + a.getType());
        }
        System.out.println();
    }

    // calculation

    public static double averageAge(ArrayList<Animal> animals)
    {
        double sum = 0;

        for (Animal a : animals)
            sum += a.getAge();

        return sum / animals.size();
    }

    // filter

    public static ArrayList<Animal> getDogs(ArrayList<Animal> animals)
    {
        ArrayList<Animal> dogs = new ArrayList<Animal>();

        for (Animal a : animals)
        {
            if (a.getType().equals("dog"))
                dogs.add(a);
        }

        return dogs;
    }

    // transform

    public static ArrayList<String> getNames(ArrayList<Animal> animals)
    {
        ArrayList<String> result = new ArrayList<String>();

        for (Animal a : animals)
            result.add(a.getName());

        return result;
    }

    public static void main(String[] args)
    {
        System.out.println("Hello, zoo!\n");

        ArrayList<Animal> animals = new ArrayList<Animal>(); 

        animals.add(new Animal("Gadget", "cat", 5, "black and white"));
        animals.add(new Animal("Tux", "cat", 5, "black and white"));
        animals.add(new Animal("Tum tum", "turtle", 9, "green and red"));
        animals.add(new Animal("Marlow", "dog", 9, "brown"));

        System.out.println("animals:");
        printAnimals(animals);

        System.out.println("average age: " + averageAge(animals));
        System.out.println();

        ArrayList<Animal> dogs = getDogs(animals);
        System.out.println("dogs:");
        printAnimals(dogs);

        ArrayList<String> names = getNames(animals);
        System.out.println("names:");
        for (String name : names)
            System.out.println(name);
    }

}

Output:

Hello, zoo!

animals:
Gadget is a black and white cat
Tux is a black and white cat
Tum tum is a green and red turtle
Marlow is a brown dog

average age: 7.0

dogs:
Marlow is a brown dog

names:
Gadget
Tux
Tum tum
Marlow

Next: