
- •java.util.concurrent
- •java.util.concurrent
- •java.util.concurrent
- •java.util.concurrent
- •java.util.concurrent
- •java.util.concurrent
- •java.util.concurrent Синхронизаторы.
- •java.util.concurrent
- •java.util.concurrent
- •java.util.concurrent Синхронизаторы.
- •java.util.concurrent
- •java.util.concurrent
- •java.util.concurrent
- •java.util.concurrent
- •java.util.concurrent
- •java.util.concurrent Синхронизаторы.
- •java.util.concurrent Синхронизаторы.
- •java.util.concurrent Синхронизаторы.
- •java.util.concurrent.atomic Классы с атомарными
- •java.util.concurrent.atomic Основные методы атомарных классов (1)
- •java.util.concurrent.atomic Основные методы
- •java.util.concurrent.atomic Классы с атомарными операциями. Пример.
- •Коллекции Java
- •Пакет java.util. Коллекции
- •Пакет java.util. Коллекции
- •Пакет java.util. Коллекции Интерфейсы
- •Пакет java.util. Коллекции Методы интерфейса Collection (1)
- •Пакет java.util. Коллекции Методы интерфейса Collection (2)
- •Пакет java.util. Коллекции Интерфейсы *Set
- •Пакет java.util. Коллекции Интерфейсы List и ListIterator
- •Пакет java.util. Коллекции Методы интерфейса List (1)
- •Пакет java.util. Коллекции Методы интерфейса List (2)
- •Пакет java.util. Коллекции Интерфейс Iterator
- •Пакет java.util. Коллекции Интерфейс ListIterator
- •Пакет java.util. Коллекции Интерфейс Queue
- •Пакет java.util. Коллекции Интерфейс Deque (1)
- •Пакет java.util. Коллекции Интерфейсы *Map
- •Пакет java.util. Коллекции Методы интерфейса Map (1)
- •Пакет java.util. Коллекции Методы интерфейса Map (2)
- •Пакет java.util. Коллекции
- •Пакет java.util. Классы коллекций (1)
- •Пакет java.util. Классы коллекций (2)
- •Пакет java.util. Классы коллекций (3)
- •Пакет java.util.concurrent
- •Пакет java.util.concurrent Классы "параллельных"
- •Пакет java.util.concurrent Классы "параллельных"
- •Пакет java.util.concurrent Классы "параллельных"
- •Пакет java.util. Коллекции
- •Пакет java.util. Классы коллекций (4)
- •Пакет java.util. Классы коллекций (5)
- •Пакет java.util.concurrent Интерфейсы и классы
- •Пакет java.util. Коллекции Сравнение коллекций

java.util.concurrent.atomic Основные методы
атомарных классов (2)
У всех численных( Integer, Long, IntegerArray, LongArray; для *Array все эти методы имеют
дополнительный первый аргумент int i):
*addAndGet(* delta) Атомарно добавляет к текущему значению аргумент delta и
возвращает полученное значение
*decrementAndGet() Атомарно уменьшает на единицу текущее значение и
возвращает результат (аналог префиксной операции – –)
*getAndAdd(* delta) Атомарно добавляет к текущему значению аргумент delta и
возвращает предыдущее значение
*getAndDecrement() Атомарно уменьшает на единицу текущее значение и
возвращает предыдущее значение (аналог постфиксной операции – –)
*getAndIncrement() Атомарно уменьшает на единицу текущее значение и
возвращает предыдущее значение (аналог постфиксной операции + +)
*incrementAndGet() Атомарно увеличивает на единицу текущее значение и
возвращает результат (аналог префиксной операции + +)

java.util.concurrent.atomic Классы с атомарными операциями. Пример.
public final class Counter { private int value = 0;
public synchronized int getValue( ) { return value;
}
public synchronized int increment( ) { return ++value;
}
}
public class NonblockingCounter {
private AtomicInteger value = new AtomicInteger( 0 ); public int getValue( ) {
return value.get( );
}
public int increment( ) { int v;
do {
v = value.get( );
while ( !value.compareAndSet( v, v + 1 ) ); return v + 1;
}
}

Коллекции Java
(Java Collections Framework)
Параллельные коллекции пакета java.util.concurrent базируются на средствах, реализованных ранее в пакете java.util, но отличаются возможностью безопасного применения в многопоточных приложениях при относительно небольших затратах.
Коллекции или контейнеры — это классы позволяющие хранить и производить операции над множеством объектов. Коллекции используются для сохранения, получения, манипулирования данными и обеспечивают агрегацию одних объектов другими.
Во многих языках программирования (java, C, C++, Pascal, …) единственным встроенным в язык средством хранения наборов объектов являются массивы. Однако, массивы обладают значительными недостатками. Одним из них является фиксированный размер массива, порождающий необходимость постоянно следить за значениями индексов. Другим — индексная адресация, что не всегда удобно, т.к. ограничивает возможности добавления и удаления объектов.
Чтобы избавиться от этих недостатков, уже несколько десятилетий программисты используют рекурсивные типы данных, такие как списки, деревья и множества.
Стандартный набор коллекций Java, реализованный в пакете java.util, служит для избавления программиста от необходимости самостоятельно реализовывать эти типы данных и снабжает его дополнительными возможностями по сравнению с массивами.

Пакет java.util. Коллекции
Взаимосвязь основных классов и интерфейсов (1)

Пакет java.util. Коллекции
Взаимосвязь основных классов и
интерфейсов (2)
Object
S
Dictionary

Пакет java.util. Коллекции Интерфейсы
Интерфейс Collection
Является корнем всей иерархии классов-коллекций. Он определяет базовую функциональность любой коллекции – набор методов,
которые позволяют добавлять, удалять, выбирать элементы коллекции. Классы, которые реализуют интерфейс Collection, могут
содержать дубликаты и пустые (null) значения.
Класс AbstractCollection, как абстрактный класс, служит основой
для создания конкретных классов коллекций и содержит реализацию некоторых методов, определенных в интерфейсе Collection. При
наследовании от этого класса все реализованные методы можно заместить.

Пакет java.util. Коллекции Методы интерфейса Collection (1)
boolean |
add( E e ) |
Если коллекция изменилась в результате |
|
|
вызова этого метода, то возвращается true, |
|
|
иначе (например, если это Set и добавляемый |
|
|
элемент уже в нем содержится) возвращается |
|
|
false. |
boolean |
addAll( Collection<? extends E> c ) Если коллекция изменилась в результате |
|
|
|
вызова этого метода, то возвращается true, |
|
|
иначе возвращается false. |
void |
clear( ) |
Удаляются все элементы из коллекции. |
boolean |
contains( Object o ) |
Если коллекция содержит указанный |
|
|
элемент, то возвращается true, иначе – false. |
boolean |
containsAll( Collection<?> c ) |
Если коллекция содержит все элементы из |
|
|
коллекции, заданной аргументом, то |
|
|
возвращается true, иначе – false. |
boolean |
isEmpty( ) |
Если коллекция пуста (не содержит ни |
|
|
одного элемента, то возвращается true, иначе |
|
|
– false. |

Пакет java.util. Коллекции Методы интерфейса Collection (2)
Iterator |
iterator( ) |
Возвращается объект, реализующий интерфейс |
<E> |
|
java.util.Iterator. |
boolean |
remove( Object o ) |
Удаляется одно (или ни одного) вхождение |
|
|
указанного элемента из коллекции. Если коллекция |
|
|
изменилась, то возвращается true, иначе |
|
|
возвращается false. |
boolean |
removeAll( Collection<?> c) |
Удаляются все вхождения элементов заданной |
|
|
коллекции. Если коллекция изменилась, то |
|
|
возвращается true, иначе возвращается false. |
boolean |
retainAll( Collection<?> c ) |
Удаляются все элементы, не входящие в указанную |
|
|
коллекцию. Если коллекция изменилась, то |
|
|
возвращается true, иначе – false. |
int |
size( ) |
Возвращается количество элементов. |
Object[ ] |
toArray( ) |
Возвращается массив, содержащий все элементы |
|
|
коллекции. |
<T> T[ ] |
toArray( T[ ] a ) |
Возвращается массив, содержащий все элементы |
|
|
коллекции (либо a, либо создается новый, если длина |
|
|
указанного массива меньше количества элементов). |

Пакет java.util. Коллекции Интерфейсы *Set
Интерфейс Set
Классы, которые реализуют этот интерфейс, не допускают наличия дубликатов в составе коллекции. В коллекции этого типа разрешено
наличие только одной ссылки типа null. Интерфейс Set расширяет интерфейс Collection (не добавляя методов), таким образом, любой
класс, реализующий интерфейс Set, имеет все методы, определенные в Collection. Любой объект, добавляемый в Set, должен реализовать
метод equals, чтобы его можно было сравнить с другими элементами.
AbstractSet, являясь абстрактным классом, представляет собой
основу для реализации различных вариантов интерфейса Set. Интерфейс SortedSet
Этот интерфейс расширяет Set, требуя, чтобы содержимое набора
было упорядочено. Такие коллекции могут содержать объекты, которые реализуют интерфейс Comparable, либо могут сравниваться с использованием внешнего Comparator.
Интерфейс NavigableSet - расширение SortedSet с приблизительным доступом к элементу. Например, метод higher( ) позволяет получить наименьшей элемент в множестве, который больше указанного.

Пакет java.util. Коллекции Интерфейсы List и ListIterator
Интерфейс List
Классы, реализующие этот интерфейс, содержат упорядоченную последовательность объектов (объекты хранятся в том порядке, в
котором они были добавлены). Интерфейс List расширяет интерфейс Collection, и любой класс, реализующий List, имеет все методы, определенные в Collection. В то же время определены новые методы,
которые позволяют добавлять и удалять элементы из списка.
Интерфейс-маркер RandomAccess предназначен для указания, что класс, реализующий список, предоставляет достаточно быстрые методы произвольного доступа к элементам коллекции.
Абстрактный класс AbstractList представляет собой основу для реализации различных вариантов интерфейса List на основе массивов и, соответственно, произвольном доступе.
Класс AbstractSequentialList предоставляет базовую реализацию интерфейса List, обеспечивая только последовательную обработку связанного списка элементов.