Унаследованные классы (Legacy Classes)
Унаследованные классы (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()
Зарегистрируйтесь или войдите, чтобы иметь возможность оставить комментарий.