Унаследованные классы (Legacy Classes)

Author: Tatyana Milkina
  1. Класс Vector
  2. Класс Stack
  3. Класс Dictionary
  4. Класс Hashtable
  5. Класс Properties
  6. Интерфейс Enumeration

Унаследованные классы (Legacy Classes) Collection Framework– это классы языка Java 1.0/1.1. И хотя эти классы были достаточно удобны, им недоставало общей, объединяющей основы.

В ряде распределенных приложений до сих пор применяются унаследованные классы, более медленные в обработке, но при этом потокобезопасные, существовавшие в языке Java с момента его создания.

Унаследованные коллекции фото

1. Класс Vector

Класс Vector реализует динамический массив.

Он подобен ArrayList, но с двумя отличиями: Vector синхронизирован и включает много унаследованных методов, не являющихся частью каркаса коллекций.

С появлением коллекций Vector был перепроектирован как расширение AbstractList, и в него была добавлена реализация интерфейса List. В версии jdk 5 он был перепроектирован под применение обобщённого синтаксиса, и в нем появилась реализация интерфейса Iterable.

2. Класс Stack

Stack это подкласс Vector, который реализует стандартный стек LIFO.

Stack определяет только конструктор по умолчанию, создающий пустой стек.

С появлением версии Java 5 подкласс Stack был перепроектирован под обобщенный синтаксис, и теперь он объявлен следующим образом: 

class Stack<E> 

3. Класс Dictionary

Dictionary - это абстрактный класс, представляющий репозиторий для хранения пар "ключ-значение" и работающий в основном подобно Мар. Передав ключ и значение, вы можете сохранить значение в объекте Dictionary. Однажды сохраненное значение можно извлечь по его ключу. То есть, подобно карте, Dictionary (словарь) можно считать списком пар "ключ-значение".

Хотя пока Dictionary не объявлен нежелательным, его можно рассматривать как устаревший, поскольку его полностью заменяет Мар.

С появлением Java 5 класс Dictionary был также сделан обобщенным: 

class Dictionary<K, V>

4. Класс Hashtable

Hashtable - это конкретная реализация Dictionary. Однако с появлением коллекций класс Hashtable был перепроектирован с тем, чтобы также реализовывать интерфейс Мар. То есть Hashtable теперь интегрирован в каркас коллекций. Он подобен HashMap, но синхронизирован. Подобно HashМap, Hashtable сохраняет пары "ключ-значение" в хеш-таблице. Однако ни ключи, ни значения не могут быть равны null.

Hashtable был сделан обобщенным в Java 5: 

class Hashtable<K, V>

5. Класс Properties

Properties (свойства) - это подкласс Hashtable.

Он служит для поддержки списков значений, в которых ключами и значениями являются объекты String.

Класс Properties используется многими другими классами Java.

Одно удобное свойство класса Properties - это то, что вы можете указать значения по умолчанию, которые будут возвращены, если никакое значение не ассоциировано с определенным ключом. Например, значение по умолчанию может быть указано вместе с ключом в методе getProperty() как, например, в getProperty("имя", "значение по умолчанию"). Если значение "имя" не найдено, возвращается "значение по умолчанию".

import java.util.Properties;
import java.util.Set;

public class PropertyExample {
    public static void main(String[] args) {
        Properties capitals = new Properties();

        capitals.put("Illinois", "Springfield");
        capitals.put("Missouri", "Jefferson City");
        capitals.put("Washington", "Olympia");
        capitals.put("California", "Sacramento");
        capitals.put("Indiana", "Indianapolis");

        // Get a set-view of the keys.
        Set states = capitals.keySet();

        // Show all of the states and capitals.
        for (Object name : states) {
            System.out.println("The capital of " + name + " is "
                    + capitals.getProperty((String) name) + ".");
        }

        System.out.println();

        // Look for state not in list -- specify default.
        String str = capitals.getProperty("Florida", "Not Found");
        System.out.println("The capital of Florida is "
                + str + ".");
    }
}

6. Интерфейс Enumeration

Интерфейс Enumeration определяет методы, которыми вы можете перечислить (получая по одному за раз) элементы в коллекции объектов. Этот унаследованный интерфейс был замещен Iterator.

Хотя Enumeration и не является deprecated, но считается устаревшим для нового кода. Однако он используется несколькими методами унаследованных классов (таких, как Vector или Properties), также некоторыми другими классами API. Поскольку он все еще задействован, он был перепроектирован в обобщенном виде в Java 5: 

interface Enumeration<E> 

В Enumeration определены следующие два метода:

boolean hasMoreElements() 
Е nextElement() 
Читайте также:
Комментарии