Коллекции. Часть 2.Лекция 9

Содержание

Слайд 2

Коллекции и обобщения , public class GenericDemo1 { public static void

Коллекции и обобщения ,

public class GenericDemo1 { public static void main(String[]

args) { List iList = new ArrayList<>(); iList.add(1); iList.add(5); iList.add(8); iList.add(9); System.out.println(getAverage(iList)); List iDouble = new ArrayList<>(); iDouble.add(1.7); iDouble.add(5.7); iDouble.add(8.3); iDouble.add(9.2); //Ошибка компиляции - List iList=iDouble; // System.out.println(getAverage(iDouble)); } public static Number getAverage(List list) { double result = 0; Number average; for (Number d : list) { result += d.doubleValue(); } average = result / list.size(); // list.add(average); return average; } }
Слайд 3

Коллекции и обобщения public class GenericDemo2 { public static void main(String[]

Коллекции и обобщения

public class GenericDemo2 { public static void main(String[]

args) { List boxes = new ArrayList<>(); List heavyBoxes = new ArrayList<>(); addBox(boxes); addBox(heavyBoxes); System.out.println(boxes); System.out.println(heavyBoxes); } public static void addBox(List list) { list.add(new HeavyBox()); } /* public static T getBox(List list) { return list.get(0); }*/ }
Слайд 4

Принцип PECS PECS – Producer Extends Consumer Super.

Принцип PECS

PECS – Producer Extends Consumer Super.

Слайд 5

Перебор содержимого коллекции Перебор содержимого коллекции может быть осуществлен двумя способами:

Перебор содержимого коллекции

Перебор содержимого коллекции может быть осуществлен двумя способами:
С помощью

цикла for each.
С помощью итератора.
Слайд 6

Интерфейс Iterator Iterator позволяет осуществлять обход коллекции и при желании удалять

Интерфейс Iterator

Iterator позволяет осуществлять обход коллекции и при желании удалять избранные

элементы.
Интерфейс Iterator используется для доступа к элементам коллекции.
Iterator iterator() – возвращает итератор.
Используйте Iterator вместо for each если вам необходимо удалить текущий элемент.
Слайд 7

Методы интерфейса Iterator

Методы интерфейса Iterator

Слайд 8

Пример использования интерфейса Iterator public class IteratorDemo { public static void

Пример использования интерфейса Iterator

public class IteratorDemo { public static void main(String[]

args) { List arrayList = new ArrayList<>(); arrayList.add("C"); arrayList.add("A"); arrayList.add("E"); arrayList.add("B"); arrayList.add("D"); arrayList.add("F"); Iterator iterator = arrayList.iterator(); while (iterator.hasNext()) { String element = iterator.next(); System.out.print(element + " "); } } }
Слайд 9

Перебор содержимого коллекции c помощью for each Все классы в каркасе

Перебор содержимого коллекции c помощью for each

Все классы в каркасе коллекций

усовершенствованы таким образом, чтобы реализовывать интерфейс Iterable.
Это означает, что содержимое коллекции можно перебрать, организовав цикл for в стиле for each.
Конструкция for each скрывает итератор, поэтому нельзя вызвать метод remove().
Слайд 10

Интерфейс ListIterator ListIterator расширяет интерфейс Iterator для двустороннего обхода списка и

Интерфейс ListIterator

ListIterator расширяет интерфейс Iterator для двустороннего обхода списка и видоизменения

его элементов.
ListIterator можно получить вызывая метод listIterator() для коллекций, реализующих List.
Слайд 11

Методы интерфейса ListIterator

Методы интерфейса ListIterator

Слайд 12

Пример использования интерфейса ListIterator public class ListIteratorDemo { public static void

Пример использования интерфейса ListIterator

public class ListIteratorDemo { public static void main(String[]

args) { List arrayList = Arrays.asList("A", "B", "C", "D"); ListIterator listIterator = arrayList.listIterator(); while (listIterator.hasNext()) { String element = listIterator.next(); listIterator.set(element + "+"); } System.out.print("Измененный arrayList в обратном порядке: "); while (listIterator.hasPrevious()) { String element = listIterator.previous(); System.out.print(element + " "); } } }
Слайд 13

Виды коллекций Отсортированные Не отсортированные Упорядоченные Неупорядоченные

Виды коллекций

Отсортированные
Не отсортированные
Упорядоченные
Неупорядоченные

Слайд 14

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

Отображения Map

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

в виде пар "ключ-значение".
По заданному ключу можно найти его значение.
Ключи и значения являются объектами.
Ключи должны быть уникальными, а значения могут быть дублированными.
В одних отображениях допускаются null ключи и null значения, а в других - они не допускаются.
Уникальность ключей определяет реализация метода equals().
Слайд 15

Отображения Map Для корректной работы с картами необходимо переопределить методы equals()

Отображения Map

Для корректной работы с картами необходимо переопределить методы equals() и

hashCode().
Допускается добавление объектов без переопределения этих методов, но найти эти объекты в Map вы не сможете.
Слайд 16

Отображения Map

Отображения Map

Слайд 17

Интерфейсы, поддерживающие отображения Мар - отображает уникальные ключи на значения. Map.Entry

Интерфейсы, поддерживающие отображения

Мар - отображает уникальные ключи на значения.
Map.Entry - описывает

элемент карты (пару "ключ значение"). Это вложенный класс Мар.
SortedМap - расширяет Мар таким образом, что ключи располагаются в порядке по возрастанию.
NavigableMap - расширяет SortedМap для обработки извлечения элементов на основе поиска по ближайшему соответствию.
Слайд 18

Интерфейс Map Интерфейс Мар отображает уникальные ключи на значения. Ключ это

Интерфейс Map

Интерфейс Мар отображает уникальные ключи на значения.
Ключ это объект,

который вы используете для последующего извлечения данных.
Задавая ключ и значение, вы можете помещать значения в объект Мар. После того, как это значение сохранено, вы можете получить его по ключу.
Мар обобщенный интерфейс: interface Мар<К, V>
Здесь К указывает тип ключей, а V тип хранимых значений.
Слайд 19

Интерфейс Мар.Entry Интерфейс Мар.Entry описывает элемент карты (пару "ключ значение"). Это вложенный класс Мар.

Интерфейс Мар.Entry

Интерфейс Мар.Entry описывает элемент карты (пару "ключ значение"). Это вложенный

класс Мар.
Слайд 20

Методы интерфейса Map void clear() Удаляет все пары "ключ-значение" из вызывающей карты.

Методы интерфейса Map

void clear()
Удаляет все пары "ключ-значение" из вызывающей карты.


Слайд 21

Методы интерфейса Map boolean containsKey(Object k) Возвращает true, если вызывающая карта

Методы интерфейса Map

boolean containsKey(Object k)
Возвращает true, если вызывающая карта содержит

ключ k. В противном случае возвращает false.
Слайд 22

Методы интерфейса Map boolean containsValue (Object v) Возвращает true, если вызывающая

Методы интерфейса Map

boolean containsValue (Object v)
Возвращает true, если вызывающая карта

содержит значение v. В противном случае возвращает false.
Слайд 23

Методы интерфейса Map boolean isEmpty() Возвращает true, если вызывающая карта пуста. В противном случае возвращает false.

Методы интерфейса Map

boolean isEmpty()
Возвращает true, если вызывающая карта пуста. В

противном случае возвращает false.
Слайд 24

Методы интерфейса Map V pиt(К k, V v) Помещает элемент в

Методы интерфейса Map

V pиt(К k, V v)
Помещает элемент в вызывающую

карту, перезаписывая любое предшествующее значение, ассоциированное с ключом. Ключ и значение это k и v соответственно. Возвращает null, если ключ ранее не существовал. В противном случае возвращается предыдущее значение, связанное с ключом.
Слайд 25

Методы интерфейса Map void putAll(Мар m) Помещает все значения из m в карту.

Методы интерфейса Map

void putAll(Мар m)
Помещает

все значения из m в карту.
Слайд 26

Методы интерфейса Map V get(Object K) Возвращает значение, ассоциированное с ключом

Методы интерфейса Map

V get(Object K)
Возвращает значение, ассоциированное с ключом k.

Возвращает null, если ключ не найден.
Слайд 27

Методы интерфейса Map Set keySet() Возвращает Set, который содержит ключи вызывающей

Методы интерфейса Map

Set keySet()
Возвращает Set, который содержит ключи вызывающей карты.

Этот метод представляет ключи вызывающей карты в виде набора.
Слайд 28

Методы интерфейса Map Collection values() Возвращает коллекцию, содержащую значения карты. Этот

Методы интерфейса Map

Collection values()
Возвращает коллекцию, содержащую значения карты. Этот метод

представляет значения, содержащихся в карте, в виде коллекции.
Слайд 29

Методы интерфейса Map Set entrySet() Возвращает Set, содержащий все значения карты.

Методы интерфейса Map

Set entrySet()
Возвращает Set, содержащий все значения

карты. Набор содержит объекты типа Мар.Entry. То есть этот метод представляет карту в виде набора.
Слайд 30

Методы интерфейса Map V remove(Object k) Удаляет элемент, чей ключ равен k.

Методы интерфейса Map

V remove(Object k)
Удаляет элемент, чей ключ равен k.


Слайд 31

Методы интерфейса Map int size() Возвращает число пар "ключ-значение" в карте.

Методы интерфейса Map

int size()
Возвращает число пар "ключ-значение" в карте.

Слайд 32

Методы интерфейса Map

Методы интерфейса Map

Слайд 33

Методы интерфейса Map

Методы интерфейса Map

Слайд 34

Методы интерфейса Map

Методы интерфейса Map

Слайд 35

Класс HashMap Класс HashMap реализует интерфейс Мар. Он использует хеш-таблицу для

Класс HashMap

Класс HashMap реализует интерфейс Мар. Он использует хеш-таблицу для хранения

карты.
Это позволяет обеспечить константное время выполнения методов get() и put() даже при больших наборах.
Ключи и значения могут быть любых типов, в том числе и null.
HashMap обобщенный класс со следующим объявлением:
class HashMap
Слайд 36

Пример использования класса HashMap public class HashMapDemo { public static void

Пример использования класса HashMap

public class HashMapDemo { public static void main(String[]

args) { Map hashMap = new HashMap<>(); hashMap.put("Иванов", 3434.34); hashMap.put("Петров", 123.22); hashMap.put("Сидоров", 1378.00); Set keys = hashMap.keySet(); for (String key : keys) { System.out.print(key + ": "); System.out.println(hashMap.get(key)); } } }
Слайд 37

Интерфейс SortedМap Интерфейс SortedМap расширяет Мар. Он гарантирует, что элементы размещаются в возрастающем порядке значений ключей.

Интерфейс SortedМap

Интерфейс SortedМap расширяет Мар. Он гарантирует, что элементы размещаются в

возрастающем порядке значений ключей.
Слайд 38

Методы SortedMap Comparator comparator() Возвращает компаратор вызывающей сортированной карты. Если картой используется естественный порядок, возвращается null.

Методы SortedMap

Comparator comparator()
Возвращает компаратор вызывающей сортированной карты. Если

картой используется естественный порядок, возвращается null.
Слайд 39

Методы SortedMap К firstKey() Возвращает первый ключ вызывающей карты. К lastKey() Возвращает последний ключ вызывающей карты.

Методы SortedMap

К firstKey()
Возвращает первый ключ вызывающей карты.
К lastKey()
Возвращает

последний ключ вызывающей карты.
Слайд 40

Методы SortedMap SortedМap headМap(К end) Возвращает сортированную карту, содержащую те элементы

Методы SortedMap

SortedМap headМap(К end)
Возвращает сортированную карту, содержащую те элементы

вызывающей карты, ключ которых меньше end.
SortedМap subMap(К start, К eпd)
Возвращает карту, содержащую элементы вызывающей карты, чей ключ больше или равен start и меньше end.
SortedМap tailMap(К start)
Возвращает сортированную карту, содержащую те элементы вызывающей карты, ключ которых больше start.
Слайд 41

Методы SortedMap

Методы SortedMap

Слайд 42

Интерфейс NavigableMap Интерфейс NavigableMap был добавлен в Java 6. Она расширяет

Интерфейс NavigableMap

Интерфейс NavigableMap был добавлен в Java 6. Она расширяет SortedМap

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

Методы NavigableMap Map.Entry lowerEntry(K key) Map.Entry floorEntry(K key) Map.Entry higherEntry(K key)

Методы NavigableMap

Map.Entry lowerEntry(K key)
Map.Entry floorEntry(K key)
Map.Entry higherEntry(K key)
Map.Entry ceilingEntry(K key)
Методы позволяют

получить соответственно меньший, меньше или равный, больший, больше или равную пару “ключ-значение” по отношению к заданному.
Слайд 44

Методы NavigableMap K lowerKey(K key) K floorKey(K key) K higherKey(K key)

Методы NavigableMap

K lowerKey(K key)
K floorKey(K key)
K higherKey(K key)
K ceilingKey(K key)
Методы позволяют

получить соответственно меньший, меньше или равный, больший, больше или равный ключ по отношению к заданному.
Слайд 45

Методы NavigableMap Map.Entry pollFirstEntry() Map.Entry pollLastEntry() Map.Entry firstEntry() Map.Entry lastEntry() Методы

Методы NavigableMap

Map.Entry pollFirstEntry()
Map.Entry pollLastEntry()
Map.Entry firstEntry()
Map.Entry lastEntry()
Методы pollFirstEntry и pollLastEntry возвращают соответственно

первый и последний элементы карты, удаляя их из коллекции. Методы firstEntry и lastEntry также возвращают соответствующие элементы, но без удаления.
Слайд 46

Методы NavigableMap NavigableMap descendingMap() Возвращает карту, отсортированную в обратном порядке.

Методы NavigableMap

NavigableMap descendingMap()
Возвращает карту, отсортированную в обратном порядке.

Слайд 47

Методы NavigableMap NavigableSet navigableKeySet() NavigableSet descendingKeySet() Методы, позволяющие получить набор ключей,

Методы NavigableMap

NavigableSet navigableKeySet()
NavigableSet descendingKeySet()
Методы, позволяющие получить набор ключей, отсортированных в прямом и обратном

порядке соответственно.
Слайд 48

Методы NavigableMap NavigableMap subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive)

Методы NavigableMap

NavigableMap subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive)
NavigableMap headMap(K

toKey, boolean inclusive)
NavigableMap tailMap(K fromKey, boolean inclusive)
Методы, позволяющие извлечь из карты подмножество. Как и в случае NavigableSet, указываем в параметрах начальный и конечный элементы массива ключей, а также необходимость включения в выходной набор граничных элементов
Слайд 49

Методы NavigableMap

Методы NavigableMap

Слайд 50

Методы NavigableMap

Методы NavigableMap

Слайд 51

Методы NavigableMap

Методы NavigableMap

Слайд 52

Классы отображений HashМap - для использования хеш-таблицы. TreeMap - для использования

Классы отображений

HashМap - для использования хеш-таблицы.
TreeMap - для использования дерева.


LinkedHashMap - расширяет HashMap, разрешая итераторы в порядке вставки.
Слайд 53

Класс TreeMap TreeMap – хранит элементы в порядке сортировки. TreeMap сортирует

Класс TreeMap

TreeMap – хранит элементы в порядке сортировки.
TreeMap сортирует элементы по

возрастанию от первого к последнему.
Порядок сортировки может задаваться реализацией интерфейсов Comparator и Comparable.
Реализация Comparator передается в конструктор TreeMap, Comparable используется при добавлении элемента в карту.
Слайд 54

Конструкторы класса TreeMap TreeMap() TreeMap(Comparator сотр) TreeMap(Map т) TreeMap(SortedМap sm)

Конструкторы класса TreeMap

TreeMap()
TreeMap(Comparator сотр)
TreeMap(Map

V> т)
TreeMap(SortedМap sm)
Слайд 55

Пример класса TreeMap public class TreeMapDemo { public static void main(String[]

Пример класса TreeMap

public class TreeMapDemo { public static void main(String[] args)

{ SortedMap treeMap = new TreeMap<>(); treeMap.put("Иванов", 3434.34); treeMap.put("Петров", 123.22); treeMap.put("Сидоров", 1378.00); treeMap.forEach((k, v) -> System.out.println(k + ": " + v)); } }
Слайд 56

Класс LinkedHashMap Класс LinkedHashMap расширяет HashMap. Он создает связный список элементов

Класс LinkedHashMap

Класс LinkedHashMap расширяет HashMap. Он создает связный список элементов в

карте, расположенных в том порядке, в котором они вставлялись. Это позволяет организовать итерацию по карте в порядке вставки.
Слайд 57

Изменяемые объекты в качестве ключа public class ProductKeyDemo { public static

Изменяемые объекты в качестве ключа

public class ProductKeyDemo { public static void

main(String[] args) { Map map = new HashMap<>(); Product doll = new Product("Кукла", 534, "Украина"); Product box = new Product("Кубик", 34, "Украина"); Product car = new Product("Машинка", 200, "Украина"); map.put(doll, "Антошка"); map.put(box, "Антошка"); map.put(car, "Детский мир"); System.out.println(map.get(doll)); doll.setCost(434); System.out.println(map.get(doll)); } }
Слайд 58

Пример “backed Collections” public class BackedCollections { public static void main(String[]

Пример “backed Collections”

public class BackedCollections { public static void main(String[] args)

{ SortedMap map = new TreeMap<>(); map.put("а", "арбуз"); map.put("в", "вишня"); map.put("д", "дыня"); SortedMap subMap = map.subMap("б", "ж"); System.out.println(map + " " + subMap); map.put("б", "брусника"); subMap.put("г", "груша"); map.put("я", "яблоко"); // subMap.put("с", "слива"); System.out.println(map + " " + subMap); } }
Слайд 59

Array-backed списки public class BackedArrayCollection { public static void main(String[] args)

Array-backed списки

public class BackedArrayCollection { public static void main(String[] args) {

String[] array = {"арбуз", "вишня", "дыня"}; List list = Arrays.asList(array); System.out.println("Список:" + list); System.out.println("Массив:" + Arrays.toString(array)); list.set(0, "яблоко"); array[1] = "брусника"; System.out.println("Список:" + list); System.out.println("Массив:" + Arrays.toString(array)); } }
Слайд 60

Алгоритмы коллекций Каркас коллекций определяет несколько алгоритмов, которые могут быть применимы

Алгоритмы коллекций

Каркас коллекций определяет несколько алгоритмов, которые могут быть применимы к

коллекциям и картам. Эти алгоритмы определены как статические методы в классе Collections.
Слайд 61

Пример метода sort(List) public class SortCollections { public static void main(String[]

Пример метода sort(List)

public class SortCollections { public static void main(String[] args)

{ List list = Arrays.asList("красный", "синий", "зеленый"); System.out.println("Перед сортировкой: " + list); Collections.sort(list); System.out.println("После сортировки: " + list); Collections.sort(list, Collections.reverseOrder()); System.out.println("После обратной сортировки: " + list); } }
Слайд 62

Пример метода binarySearch(List) public class BinarySearchDemo { public static void main(String[]

Пример метода binarySearch(List)

public class BinarySearchDemo { public static void main(String[] args)

{ List list = Arrays.asList("красный", "синий", "зеленый"); Collections.sort(list); System.out.println(list); System.out.println(Collections.binarySearch(list, "красный")); System.out.println(Collections.binarySearch(list, "черный")); } }
Слайд 63

Пример методов reverse(List), shuffle(List) public class CollectionsExample1 { public static void

Пример методов reverse(List), shuffle(List)

public class CollectionsExample1 { public static void main(String[]

args) { List list = Arrays.asList("красный", "синий", "зеленый", "черный"); System.out.println("Перед reversing: " + list); Collections.reverse(list); System.out.println("После reversing: " + list); Collections.shuffle(list); System.out.println("После shuffling: " + list); } }
Слайд 64

Пример метода fill(List, Object) public class CollectionsFillDemo { public static void

Пример метода fill(List, Object)

public class CollectionsFillDemo { public static void main(String[]

args) { List list = Arrays.asList("красный", "синий", "зеленый"); Collections.fill(list, "черный"); System.out.println(list); } }
Слайд 65

Пример методов max(List), min(List) public class CollectionsMinMaxDemo { public static void

Пример методов max(List), min(List)

public class CollectionsMinMaxDemo { public static void main(String[]

args) { List list = Arrays.asList(2, 2, 5, 8, 9); System.out.println(Collections.max(list)); System.out.println(Collections.min(list)); } }
Слайд 66

Пример методa copy(List, List) public class CollectionsCopyDemo { public static void

Пример методa copy(List, List)

public class CollectionsCopyDemo { public static void main(String[]

args) { List src = Arrays.asList(1, 2, 3); List dest = Arrays.asList(4, 5, 6, 7); Collections.copy(dest, src); System.out.println(dest); } }
Слайд 67

Пример методa rotate(List, int) public class CollectionsRotateDemo { public static void

Пример методa rotate(List, int)

public class CollectionsRotateDemo { public static void main(String[]

args) { List list = Arrays.asList("a", "b", "c", "d", "e"); System.out.println(list); Collections.rotate(list, 2); System.out.println(list); Collections.rotate(list, -1); System.out.println(list); } }
Слайд 68

Пример метода checkedCollection() public class MyCheckedCollection { public static void main(String[]

Пример метода checkedCollection()

public class MyCheckedCollection { public static void main(String[] a)

{ List myList = new ArrayList(); myList.add("one"); myList.add("two"); myList.add("three"); myList.add("four"); Collection checkList = Collections.checkedCollection(myList, String.class); System.out.println("Checked list content: " + checkList); myList.add(10); checkList.add(10); //throws ClassCastException } }
Слайд 69

Пример метода frequency() public class CollectionsFrequencyDemo { public static void main(String[]

Пример метода frequency()

public class CollectionsFrequencyDemo { public static void main(String[] args)

{ Collection collection = Arrays.asList("red", "cyan", "red"); System.out.println(Collections.frequency(collection, "red")); } }
Слайд 70

Методы Collections

Методы Collections

Слайд 71

Методы Collections

Методы Collections

Слайд 72

Методы Collections

Методы Collections

Слайд 73

Методы Collections

Методы Collections

Слайд 74

Унаследованные коллекции Унаследованные коллекции (Legacy Collections) – это коллекции языка Java

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

Унаследованные коллекции (Legacy Collections) – это коллекции языка Java 1.0/1.1.
И

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

Унаследованные коллекции List Vector Stack Map Dictionary Hashtable Properties Enumeration

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

List

Vector

Stack

Map

Dictionary

Hashtable

Properties

Enumeration

Слайд 76

Класс Vector Класс Vector реализует динамический массив. Он подобен ArrayList, но

Класс Vector

Класс Vector реализует динамический массив.
Он подобен ArrayList, но с

двумя отличиями: Vector синхронизирован и включает мнoгo унаследованных методов, не являющихся частью каркаса коллекций.
С появлением коллекций Vector был перепроектирован как расширение AbstractList, и в негo была добавлена реализация интерфейса List.
В версии jDК5 он был перепроектирован под применение обобщённого синтаксиса, и в нем появилась реализация интерфейса Iterable.
Слайд 77

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

Класс Stack

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

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

Класс Dictionary Dictionary это абстрактный класс, представляющий репозиторий для хранения пар

Класс Dictionary

Dictionary это абстрактный класс, представляющий репозиторий для хранения пар

"ключ-значение" и работающий в основном подобно Мар. Передав ключ и значение, вы можете сохранить значение в объекте Dictionary.
Однажды сохраненное значение можно извлечь по eгo ключу. То есть, подобно карте, Dictionary (словарь) можно считать списком пар "ключ-значение".
Хотя пока Dictionary не объявлен нежелательным, eгo можно рассматривать как устаревший, поскольку eгo полностью заменяет Мар.
С появлением Java 5 класс Dictionary был также сделан обобщенным: class Dictionary
Слайд 79

Класс Hashtable Hashtable это часть исходного пакета java.util и конкретная реализация

Класс Hashtable

Hashtable это часть исходного пакета java.util и конкретная реализация Dictionary.


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

Класс Properties Properties (свойства) подкласс Hashtable. Он служит для поддержки списков

Класс Properties

Properties (свойства) подкласс Hashtable. Он служит для поддержки списков

значений, в которых ключами являются объекты String и значения также объекты String.
Класс Properties используется многими другими классами Jаvа.
Одно удобное свойство класса Properties это то, что вы можете указать значения по умолчанию, которые будут возвращены, если никакое значение не ассоциировано с определенным ключом.
Например, значение по умолчанию может быть указано вместе с ключом в методе getProperty() как, например, в getProperty("имя", "значение по умолчанию"). Если значение "имя" не найдено, возвращается "значение по умолчанию".
Слайд 81

Пример использования класса Properties public class PropertyDemo { public static void

Пример использования класса Properties

public class PropertyDemo { 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 + "."); } }
Слайд 82

Интерфейс Enumeration Интерфейс Enumeration определяет методы, которыми вы можете перечислить (получая

Интерфейс Enumeration

Интерфейс Enumeration определяет методы, которыми вы можете перечислить (получая по

одному за раз) элементы в коллекции объектов.
Этот унаследованный интерфейс был замещен Iterator.
Хотя Enumeration и не является не рекомендованным, но считается устаревшим для нового кода.
Однако он используется несколькими методами унаследованных классов (таких как Vector или Properties), также некоторыми другими классами АРI.
Поскольку он все еще задействован, он был перепроектирован в обобщенном виде jDK 5. Он имеет следующее объявление:
interface Enumeration