Что такое коллекции java
Перейти к содержимому

Что такое коллекции java

  • автор:

Коллекции в Java

В этом уроке мы рассмотрим коллекции, которые являются одной из важных частей Java Core.

Коллекции (Collection Framework) – это хранилища, поддерживающие различные способы накопления и упорядочения объектов с целью обеспечения возможностей эффективного доступа к ним. Они очень похожи на массивы, но имеют намного больше возможностей. Очень тяжело написать приложение на Java, которое может обойтись без коллекций.

Коллекции были добавлены в версии J2SЕ 1.2.

Collection framework в языке Java состоит из 3-х частей:

  • интерфейсы,
  • классы,
  • алгоритмы.

Практически все коллекции и интерфейсы являются обобщенными. На этапе создания коллекции, вы скорее всего будете знать элементы какого типа вам нужны — String, Integer и т.д. Конечно же можно создать необобщенную коллекцию, но так делается крайне редко.

В этом уроке рассмотрим основные элементы коллекций, иерархия которых представлена на следующем рисунке:

Иерархия Collection Framework

Презентацию с видео можно скачать на Patreon .

  1. Интерфейс Collection
  2. Структуры данных
  3. Интерфейс List и класс ArrayList
  4. Интерфейс Set и классы HashSet, LinkedHashSet
  5. Интерфейс SortedSet и класс TreeSet
  6. Интерфейсы Comparable и Comparator
  7. Интерфейс NavigableSet
  8. Интерфейсы Queue и Deque
  9. Класс ArrayDeque
  10. Класс LinkedList
  11. Класс PriorityQueue
  12. Принцип PECS
  13. Интерфейс Iterator
  14. Интерфейс ListIterator
  15. Отображения Map
  16. Класс Collections
  17. Backed Collections
  18. Legacy Classes
  19. Задания

Коллекции

Для хранения наборов данных в Java предназначены массивы. Однако их не всегда удобно использовать, прежде всего потому, что они имеют фиксированную длину. Эту проблему в Java решают коллекции. Однако суть не только в гибких по размеру наборах объектов, но в и том, что классы коллекций реализуют различные алгоритмы и структуры данных, например, такие как стек, очередь, дерево и ряд других.

Классы коллекций располагаются в пакете java.util , поэтому перед применением коллекций следует подключить данный пакет.

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

  • Collection : базовый интерфейс для всех коллекций и других интерфейсов коллекций
  • Queue : наследует интерфейс Collection и представляет функционал для структур данных в виде очереди
  • Deque : наследует интерфейс Queue и представляет функционал для двунаправленных очередей
  • List : наследует интерфейс Collection и представляет функциональность простых списков
  • Set : также расширяет интерфейс Collection и используется для хранения множеств уникальных объектов
  • SortedSet : расширяет интерфейс Set для создания сортированных коллекций
  • NavigableSet : расширяет интерфейс SortedSet для создания коллекций, в которых можно осуществлять поиск по соответствию
  • Map : предназначен для созданий структур данных в виде словаря, где каждый элемент имеет определенный ключ и значение. В отличие от других интерфейсов коллекций не наследуется от интерфейса Collection

Эти интерфейсы частично реализуются абстрактными классами:

  • AbstractCollection : базовый абстрактный класс для других коллекций, который применяет интерфейс Collection
  • AbstractList : расширяет класс AbstractCollection и применяет интерфейс List, предназначен для создания коллекций в виде списков
  • AbstractSet : расширяет класс AbstractCollection и применяет интерфейс Set для создания коллекций в виде множеств
  • AbstractQueue : расширяет класс AbstractCollection и применяет интерфейс Queue, предназначен для создания коллекций в виде очередей и стеков
  • AbstractSequentialList : также расширяет класс AbstractList и реализует интерфейс List. Используется для создания связанных списков
  • AbstractMap : применяет интерфейс Map, предназначен для создания наборов по типу словаря с объектами в виде пары «ключ-значение»

С помощью применения вышеописанных интерфейсов и абстрактных классов в Java реализуется широкая палитра классов коллекций — списки, множества, очереди, отображения и другие, среди которых можно выделить следующие:

  • ArrayList : простой список объектов
  • LinkedList : представляет связанный список
  • ArrayDeque : класс двунаправленной очереди, в которой мы можем произвести вставку и удаление как в начале коллекции, так и в ее конце
  • HashSet : набор объектов или хеш-множество, где каждый элемент имеет ключ — уникальный хеш-код
  • TreeSet : набор отсортированных объектов в виде дерева
  • LinkedHashSet : связанное хеш-множество
  • PriorityQueue : очередь приоритетов
  • HashMap : структура данных в виде словаря, в котором каждый объект имеет уникальный ключ и некоторое значение
  • TreeMap : структура данных в виде дерева, где каждый элемент имеет уникальный ключ и некоторое значение

Схематично всю систему коллекций вкратце можно представить следующим образом:

Интерфейсы коллекций в Java

Интерфейс Collection

Интерфейс Collection является базовым для всех коллекций, определяя основной функционал:

public interface Collection extends Iterable < // определения методов >

Интерфейс Collection является обобщенным и расширяет интерфейс Iterable, поэтому все объекты коллекций можно перебирать в цикле по типу for-each .

Среди методов интерфейса Collection можно выделить следующие:

  • boolean add (E item) : добавляет в коллекцию объект item. При удачном добавлении возвращает true, при неудачном — false
  • boolean addAll (Collection col) : добавляет в коллекцию все элементы из коллекции col. При удачном добавлении возвращает true, при неудачном — false
  • void clear () : удаляет все элементы из коллекции
  • boolean contains (Object item) : возвращает true, если объект item содержится в коллекции, иначе возвращает false
  • boolean isEmpty () : возвращает true, если коллекция пуста, иначе возвращает false
  • Iterator iterator () : возвращает объект Iterator для обхода элементов коллекции
  • boolean remove (Object item) : возвращает true, если объект item удачно удален из коллекции, иначе возвращается false
  • boolean removeAll (Collection col) : удаляет все объекты коллекции col из текущей коллекции. Если текущая коллекция изменилась, возвращает true, иначе возвращается false
  • boolean retainAll (Collection col) : удаляет все объекты из текущей коллекции, кроме тех, которые содержатся в коллекции col. Если текущая коллекция после удаления изменилась, возвращает true, иначе возвращается false
  • int size () : возвращает число элементов в коллекции
  • Object[] toArray () : возвращает массив, содержащий все элементы коллекции

Все эти и остальные методы, которые имеются в интерфейсе Collection, реализуются всеми коллекциями, поэтому в целом общие принципы работы с коллекциями будут одни и те же. Единообразный интерфейс упрощает понимание и работу с различными типами коллекций. Так, добавление элемента будет производиться с помощью метода add , который принимает добавляемый элемент в качестве параметра. Для удаления вызывается метод remove() . Метод clear будет очищать коллекцию, а метод size возвращать количество элементов в коллекции.

Для чего нужны коллекции в программировании?

Для чего нужны коллекции? Списки, очереди, наборы? Что в них можно хранить? Можете пожалуйста дать ссылки примеров работы с коллекциями?

Отслеживать
Anton Sorokin
задан 28 окт 2016 в 11:30
Anton Sorokin Anton Sorokin
6,998 6 6 золотых знаков 37 37 серебряных знаков 65 65 бронзовых знаков
был похожий вопрос, почитайте немного станет понятнее ru.stackoverflow.com/questions/561489/…
28 окт 2016 в 11:36

Коллекции нужны для хранения множества объектов. Неплохое краткое руководство есть тут. Ну а вообще, для понимания работы коллекций необходимо бы почитать соответствующую главу в одной из классических книг по Java (да можно и без привязки к языку, но лучше с ней).

28 окт 2016 в 11:40

Классическая статья на Хабре о коллекциях в целом. Очень простые примеры того, что можно делать с коллекциями, но на английском: раз и два

28 окт 2016 в 11:42

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Что-то какой-то ответ предыдущего оратора слишком краткий, на мой вкус. И статья на мой вкус не самая «вкусная».

Для чего нужны коллекции? > списки,очереди,и наборы?

Очень просто — в коллекциях вы можете хранить объекты, практически любые. Коллекции, это в том или ином приближении — динамические массивы, то есть массив который увеличивает свою длину, когда вы записываете новый объект. К примеру, пусть вы пишите какой-нибудь обработчик картинок. Вы разумеется не знаете, сколько к вам в хранилище придёт снимков. Может быть нуль, может быть сто. Вы создаёте динамический список ArrayList и в нём храните то, что нужно.

Очередь с приоритетом часто используется для сортировки массива и для нахождения максимума\минимума.

Набор set — упорядоченное множество. Коллекции Set предназначены для хранения множества не повторяющихся объектов. Таким образом при добавление двух элементов с одинаковым значением в коллекцию, с интерфейсом Set , коллекции это воспримут за один элемент. Каждый объект который вы добавите в коллекцию set получит свой уникальный хэш-код, то есть строку по которой можно будет осуществить доступ к нему. Пример использования Set — пусть вы пишите базу данных по автомобильным номерам. Там не допустима ситуация, когда у двух машин один номер. Именно set по скорости работы (поиска и добавления) в этом плане окажется эффективнее других структур данных.

Что в них можно хранить(и как?примеры)?

Про то как примерно хранить. Я давал нечто, похожее на ответ в другом вопросе.

Если вам вздумается экономить время в изучении вопроса с коллекциями, я шибко рекомендую посмотреть примеры в формате скринкастов на ютьюбе. ИМХО это отличные практические занятия для каждого. Мне больше всего по коллекциям понравилось это:

К слову должен сказать, что это не единственные хорошие уроки по коллекциям на ютьюбе, есть ещё куча не плохих.

PS. Если материал кажется вам не полным вы можете задать дополнительные вопросы, типа примеров работы c каждой конкретной коллекцией. Ибо в одном ответе довольно трудно всё кратко прояснить.

31. Java – Фреймворк коллекций

Вплоть до Java 2, Java предоставляла особые классы, такие как Dictionary, Vector, Stack, и Properties для хранения и управления группами объектов. Хоть эти классы были полезными, им не хватало центральной, объединяющей тематики. Именно поэтому то, как вы использовали Vector отличается от того, как вы использовали Properties.

Структура коллекций в Java была создана для того чтобы удовлетворять таким целям, как:

  • Фреймворк должен быть высокопроизводительным. Реализации фундаментальных коллекций (динамические массивы, связанные списки, деревья и хэш-таблицы) должны быть высокоэффективными.
  • Фреймворк должен позволять разным типам коллекций работать аналогичным образом и с высокой степенью совместимости.
  • Фреймворк должен уметь расширяться и/или легко адаптировать коллекцию

С этой целью вся структура коллекций разработана вокруг набора стандартных интерфейсов. Несколько стандартных реализаций типа LinkedList, HashSet, и TreeSet из этих интерфейсов предоставляются таким образом, что вы можете их использовать «как есть» или можете реализовать свою собственную коллекцию по вашему выбору.

Фреймворк коллекций – это объединённая архитектура для представления и управления коллекциями. Все структуры коллекций содержат в себе следующее:

  • Интерфейсы – это абстрактные типы данных, которые представляют коллекции. Интерфейсы позволяют управлять коллекциями вне зависимости от деталей их представления. В объектно-ориентированных языках интерфейсы обычно формируют иерархию.
  • Реализации, т.e. классы – Это конкретные реализации интерфейсов коллекций. По сути, они являются структурными данных, которые можно многократно использовать.
  • Алгоритмы – это методы, которые выполняют полезные вычисления с объектами, которые реализуют интерфейсы коллекций, например поиск и сортировку. Алгоритмы считаются полиморфными, то есть один и тот же метод может быть использован во множестве различных реализаций соответствующего интерфейса коллекций.

Помимо коллекций, фреймворк определяет некоторые интерфейсы и классы карт. Карты хранят пары ключ/значение. Хоть карты не являются коллекциями в обычном их понимании, но они полностью интегрированы с коллекциями.

Интерфейсы коллекций

Структура коллекций определяет некоторые интерфейсы в Java. Этот раздел вкратце описывает каждый из них.

Интерфейс и описание
1 Интерфейс Collection
Позволяет работать с группами объектов; находится на вершине иерархии коллекций.
2 Интерфейс List
Расширяет Collection и экземпляр List хранит упорядоченный набор элементов.
3 Интерфейс Set
Расширяет Collection, чтобы обрабатывать наборы, которые должны содержать уникальные элементы.
4 SortedSet
Расширяет Set для обработки отсортированных наборов.
5 Map
Привязывает уникальные ключи к значениям
6 Map.Entry
Описывает элемент (пара ключ/значение) в карте. Это внутренний класс Map.
7 SortedMap
Расширяет Map так, чтобы ключи были расположены в порядке возрастания.
8 Enumeration
Устаревший интерфейс, определяющий методы, которым вы можете перечислить (получать по одному за раз) элементы в коллекции объектов. Этот устаревший интерфейс был заменен Iterator

Классы коллекций

Java предоставляет набор стандартных классов коллекции, которые реализуют интерфейсы Collection. Некоторые из классов предоставляют полные реализации, которые могут быть использованы как есть, а другие являются абстрактным классом, предоставляя скелетные реализации, которые используются как начальные точки для создания конкретных коллекций.

Стандартные классы коллекций в Java приведены в следующей таблице:

Класс и описание
1 AbstractCollection
Реализует большую часть интерфейса Collection
2 AbstractList
Расширяет AbstractCollection и реализует большую часть интерфейса List
3 AbstractSequentialList
Расширяет AbstractList для использования коллекцией, которая использует последовательный, а не произвольный доступ к своим элементам.
4 LinkedList
Реализует связанный список, расширяя AbstractSequentialList.
5 ArrayList
Реализует динамический массив, расширяя AbstractList
6 AbstractSet
Расширяет AbstractCollection и реализует большую часть интерфейса Set.
7 HashSet
Расширяет AbstractSet для использования в хэш-таблице
8 LinkedHashSet
Расширяет HashSet, чтобы разрешить итерации порядка вставки.
9 TreeSet
Реализует набор, хранящийся в дереве. Расширяет AbstractSet.
10 AbstractMap
Реализует большую часть интерфейса Map.
11 HashMap
Расширяет AbstractMap для использования хэш-таблицы
12 TreeMap
Расширяет AbstractMap для использования дерева.
13 WeakHashMap
Расширяет AbstractMap для использования хеш-таблицы со слабыми ключами.
14 LinkedHashMap
Расширяет HashMap, чтобы разрешить итерации порядка вставки.
15 IdentityHashMap
Расширяет AbstractMap и использует равенство ссылок при сравнении документов.

Классы AbstractCollection, AbstractSet, AbstractList, AbstractSequentialList и AbstractMap предоставляют скелетные реализации интерфейсов основной коллекции в Java, чтобы свести к минимуму усилия, необходимые для их реализации.

Следующие устаревшие классы, определённые java.util, обсуждались в предыдущей главе:

Класс и описание
1 Vector
Реализует динамический массив. Схож с ArrayList, но с некоторыми отличиями.
2 Stack
Stack – это подкласс Vector, который реализует стандартный стэк «последним пришёл – первым ушёл».
3 Dictionary
Dictionary – это абстрактный класс, который представляет собой хранилище ключей/значений и работает так же, как и Map.
4 Hashtable
Hashtable был частью оригинального java.util и является конкретной реализацией Dictionary.
5 Properties
Properties – это подкласс Hashtable. Он используется для хранения списков значений, в которых ключ является строкой, и значение тоже является строкой.
6 BitSet
Класс BitSet создает специальный тип массива, который содержит значения бит. Этот массив может увеличиваться в размерах при необходимости.

Алгоритмы Collection

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

Некоторые из методов могут генерировать ClassCastException, которое возникает при попытке сравнить несовместимые типы или UnsupportedOperationException, которое возникает, когда предпринимается попытка изменить немодифицируемую коллекцию.

Коллекции определяют три статические переменные: EMPTY_SET, EMPTY_LIST и EMPTY_MAP. Все неизменны.

Алгоритм и описание
1 Алгоритмы Collection
Вот список всех реализаций алгоритма.

Как использовать итератор коллекции в Java?

Вы будете часто хотеть циклически перемещаться по элементам в коллекции. Например, вы захотите отобразить каждый элемент.

Легчайший способ это сделать – использовать итератор, который является объектом, который реализует интерфейс Iterator или ListIterator.

Iterator позволяет вам перемещаться по коллекции, получать или удалять элементы. ListIterator расширяет Iterator, чтобы обеспечить двунаправленный обход списка и модификацию элементов.

Метод Iterator и описание
1 Использование Iterator в Java
Вот список всех методов с примерами, предоставляемыми интерфейсами Iterator и ListIterator.

Как использовать компаратор?

И TreeSet, и TreeMap хранят элементы в отсортированном порядке. Однако, именно компаратор определяет, что такое отсортированный порядок.

Этот интерфейс позволяет нам сортировать данную коллекцию любым количеством различных способов. Также этот интерфейс может использоваться для сортировки любых экземпляров любого класса (даже классов, которые мы не можем изменить).

Метод Comparator и описание
1 Использование Comparator в Java
Вот список всех методов с примерами, предоставляемыми интерфейсом Comparator.

Итог

Структура коллекций Java даёт программисту доступ к предварительно упакованным структурам данных, а также к алгоритмам для их управления.

Коллекция – это объект, который может содержать ссылки на другие объекты. Интерфейсы коллекции объявляют операции, которые могут выполняться для каждого типа коллекции.

Классы и интерфейсы структуры коллекций находятся в java.util.

Оглавление

  • 1. Java – Самоучитель для начинающих
  • 2. Java – Обзор языка
  • 3. Java – Установка и настройка
  • 4. Java – Синтаксис
  • 5. Java – Классы и объекты
  • 6. Java – Конструкторы
  • 7. Java – Типы данных и литералы
  • 8. Java – Типы переменных
  • 9. Java – Модификаторы
  • 10. Java – Операторы
  • 11. Java – Циклы и операторы цикла
  • 11.1. Java – Цикл while
  • 11.2. Java – Цикл for
  • 11.3. Java – Улучшенный цикл for
  • 11.4. Java – Цикл do..while
  • 11.5. Java – Оператор break
  • 11.6. Java – Оператор continue
  • 12. Java – Операторы принятия решений
  • 12.1. Java – Оператор if
  • 12.2. Java – Оператор if..else
  • 12.3. Java – Вложенный оператор if
  • 12.4. Java – Оператор switch..case
  • 12.5. Java – Условный оператор (? 🙂
  • 13. Java – Числа
  • 13.1. Java – Методы byteValue(), shortValue(), intValue(), longValue(), floatValue(), doubleValue()
  • 13.2. Java – Метод compareTo()
  • 13.3. Java – Метод equals()
  • 13.4. Java – Метод valueOf()
  • 13.5. Java – Метод toString()
  • 13.6. Java – Метод parseInt()
  • 13.7. Java – Метод Math.abs()
  • 13.8. Java – Метод Math.ceil()
  • 13.9. Java – Метод Math.floor()
  • 13.10. Java – Метод Math.rint()
  • 13.11. Java – Метод Math.round()
  • 13.12. Java – Метод Math.min()
  • 13.13. Java – Метод Math.max()
  • 13.14. Java – Метод Math.exp()
  • 13.15. Java – Метод Math.log()
  • 13.16. Java – Метод Math.pow()
  • 13.17. Java – Метод Math.sqrt()
  • 13.18. Java – Метод Math.sin()
  • 13.19. Java – Метод Math.cos()
  • 13.20. Java – Метод Math.tan()
  • 13.21. Java – Метод Math.asin()
  • 13.22. Java – Метод Math.acos()
  • 13.23. Java – Метод Math.atan()
  • 13.24. Java – Метод Math.atan2()
  • 13.25. Java – Метод Math.toDegrees()
  • 13.26. Java – Метод Math.toRadians()
  • 13.27. Java – Метод Math.random()
  • 14. Java – Символы
  • 14.1. Java – Метод Character.isLetter()
  • 14.2. Java – Метод Character.isDigit()
  • 14.3. Java – Метод Character.isWhitespace()
  • 14.4. Java – Метод Character.isUpperCase()
  • 14.5. Java – Метод Character.isLowerCase()
  • 14.6. Java – Метод Character.toUpperCase()
  • 14.7. Java – Метод Character.toLowerCase()
  • 14.8. Java – Метод Character.toString()
  • 15. Java – Строки
  • 15.1. Java – Метод charAt()
  • 15.2. Java – Метод compareTo()
  • 15.3. Java – Метод compareToIgnoreCase()
  • 15.4. Java – Метод concat()
  • 15.5. Java – Метод contentEquals()
  • 15.6. Java – Метод copyValueOf()
  • 15.7. Java – Метод endsWith()
  • 15.8. Java – Метод equals()
  • 15.9. Java – Метод equalsIgnoreCase()
  • 15.10. Java – Метод getBytes()
  • 15.11. Java – Метод getChars()
  • 15.12. Java – Метод hashCode()
  • 15.13. Java – Метод indexOf()
  • 15.14. Java – Метод intern()
  • 15.15. Java – Метод lastIndexOf()
  • 15.16. Java – Метод length()
  • 15.17. Java – Метод matches()
  • 15.18. Java – Метод regionMatches()
  • 15.19. Java – Метод replace()
  • 15.20. Java – Метод replaceAll()
  • 15.21. Java – Метод replaceFirst()
  • 15.22. Java – Метод split()
  • 15.23. Java – Метод startsWith()
  • 15.24. Java – Метод subSequence()
  • 15.25. Java – Метод substring()
  • 15.26. Java – Метод toCharArray()
  • 15.27. Java – Метод toLowerCase()
  • 15.28. Java – Метод toString()
  • 15.29. Java – Метод toUpperCase()
  • 15.30. Java – Метод trim()
  • 15.31. Java – Метод valueOf()
  • 15.32. Java – Классы StringBuilder и StringBuffer
  • 15.32.1. Java – Метод append()
  • 15.32.2. Java – Метод reverse()
  • 15.32.3. Java – Метод delete()
  • 15.32.4. Java – Метод insert()
  • 15.32.5. Java – Метод replace()
  • 16. Java – Массивы
  • 17. Java – Дата и время
  • 18. Java – Регулярные выражения
  • 19. Java – Методы
  • 20. Java – Потоки ввода/вывода, файлы и каталоги
  • 20.1. Java – Класс ByteArrayInputStream
  • 20.2. Java – Класс DataInputStream
  • 20.3. Java – Класс ByteArrayOutputStream
  • 20.4. Java – Класс DataOutputStream
  • 20.5. Java – Класс File
  • 20.6. Java – Класс FileReader
  • 20.7. Java – Класс FileWriter
  • 21. Java – Исключения
  • 21.1. Java – Встроенные исключения
  • 22. Java – Вложенные и внутренние классы
  • 23. Java – Наследование
  • 24. Java – Переопределение
  • 25. Java – Полиморфизм
  • 26. Java – Абстракция
  • 27. Java – Инкапсуляция
  • 28. Java – Интерфейсы
  • 29. Java – Пакеты
  • 30. Java – Структуры данных
  • 30.1. Java – Интерфейс Enumeration
  • 30.2. Java – Класс BitSet
  • 30.3. Java – Класс Vector
  • 30.4. Java – Класс Stack
  • 30.5. Java – Класс Dictionary
  • 30.6. Java – Класс Hashtable
  • 30.7. Java – Класс Properties
  • 31. Java – Коллекции
  • 31.1. Java – Интерфейс Collection
  • 31.2. Java – Интерфейс List
  • 31.3. Java – Интерфейс Set
  • 31.4. Java – Интерфейс SortedSet
  • 31.5. Java – Интерфейс Map
  • 31.6. Java – Интерфейс Map.Entry
  • 31.7. Java – Интерфейс SortedMap
  • 31.8. Java – Класс LinkedList
  • 31.9. Java – Класс ArrayList
  • 31.10. Java – Класс HashSet
  • 31.11. Java – Класс LinkedHashSet
  • 31.12. Java – Класс TreeSet
  • 31.13. Java – Класс HashMap
  • 31.14. Java – Класс TreeMap
  • 31.15. Java – Класс WeakHashMap
  • 31.16. Java – Класс LinkedHashMap
  • 31.17. Java – Класс IdentityHashMap
  • 31.18. Java – Алгоритмы Collection
  • 31.19. Java – Iterator и ListIterator
  • 31.20. Java – Comparator
  • 32. Java – Дженерики
  • 33. Java – Сериализация
  • 34. Java – Сеть
  • 34.1. Java – Обработка URL
  • 35. Java – Отправка Email
  • 36. Java – Многопоточность
  • 36.1. Java – Синхронизация потоков
  • 36.2. Java – Межпоточная связь
  • 36.3. Java – Взаимная блокировка потоков
  • 36.4. Java – Управление потоками
  • 37. Java – Основы работы с апплетами
  • 38. Java – Javadoc

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *