How do I create type specific collections?

package org.kodejava.basic;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class TypeSpecificCollection {
    public static void main(String[] args) {
        // Using a Generic can enable us to create a type specific collection
        // object. In the example below we create a Map whose key is an Integer
        // a have the value of a String.
        Map<Integer, String> grades = new HashMap<>();
        grades.put(1, "A");
        grades.put(2, "B");
        grades.put(3, "C");
        grades.put(4, "D");
        grades.put(5, "E");

        // A value obtained from type specific collection doesn't need to
        // be cast, it knows the type returned.
        String value = grades.get(1);
        System.out.println("value = " + value);

        // Creating a List that will contain a String only values.
        List<String> dayNames = new ArrayList<>();
        dayNames.add("Sunday");
        dayNames.add("Monday");
        dayNames.add("Tuesday");
        dayNames.add("Wednesday");

        // We also don't need to cast the retrieved value because it knows the
        // returned type object.
        String firstDay = dayNames.get(0);
        System.out.println("firstDay = " + firstDay);
    }
}

How do I get all available timezones?

package org.kodejava.util;

import java.util.TimeZone;

public class TimezonesExample {
    public static void main(String[] args) {
        String[] availableTimezones = TimeZone.getAvailableIDs();

        for (String timezone : availableTimezones) {
            System.out.println("Timezone ID = " + timezone);
        }
    }
}

Some examples of the returned timezones ids are:

Timezone ID = Etc/GMT+12
Timezone ID = Etc/GMT+11
Timezone ID = MIT
Timezone ID = Pacific/Apia
Timezone ID = Pacific/Midway
Timezone ID = Pacific/Niue
Timezone ID = Pacific/Pago_Pago
Timezone ID = Pacific/Samoa
Timezone ID = US/Samoa
...