SlideShare a Scribd company logo
1 of 21
Структуры данных
 «Программы = алгоритмы + структуры данных»
    (Н. Вирт)
   Любая программа работает с данными
   Чем сложнее решаемая задача, тем более сложные
    требуются структуры данных
   Простейшая составная структура данных – массив
    однотипных элементов
   Обработка массивов, как правило, проста и быстра
Коллекции в Java
 Платформы Java содержат набор готовых классов,
  реализующих механизмы работы со структурами
  данных
 Такие классы называются коллекциями
  (collections)
 Хотя обработка массивов происходит быстрее, в
  ряде случаев требуется использовать коллекции
Предпосылки использования
 Необходимость динамического изменения размера
    структуры данных
   Динамическое добавление или удаление элемента
   Хранение разнотипных элементов (объектов)
   Извлечение и манипуляция данными из БД
   Хранение и работа со сложными структурами
    данных (деревьями, списками, стеками, хеш-
    таблицами и т.д.)
   и т.п.
Базовые интерфейсы и классы
 Интерфейс Collection предназначен для хранения
 однородных элементов. Его расширяют интерфейсы:
   List – список
   Set – множество
   Queue – очередь
 Интерфейс Map предназначен для создания коллекций,
 хранящих пары «ключ-значение». Его реализуют
 классы:
   HashMap
   IdentityHashMap
   LinkedHashMap
Иерархия классов и интерфейсов
          коллекций            <<interface>>
                                Collection
                                                                                                     <<interface>>
                         +add                                                                            Map
                         +addAll
                         +clear                                                                   +clear
                         +contains                                                                +containsKey
                         +containsAll                                                             +containsValue
                                                               <<interface>>
                         +equals                                                                  +entrySet
                                                                  Iterator
                         +hashCode                                                                +equals
                         +isEmpty                                                                 +get
                         +iterator                                                                +hashCode
                                                               <<interface>>                      +isEmpty
                         +remove
                                                                ListIterator                      +keySet
                         +removeAll
                         +retainAll                                                               +put
                         +size                                                                    +putAll
                         +toArray                                                                 +remove
                                                                                                  +values




          <<interface>        <<interface>>    <<interface>>                      <<interface>>
               >                   List           Queue                            SortedMap
              Set

                                                                                                      HashTable      HashMap

                                                                        <<interface>>
                 <<interface>>
                                                                           Deque
                   SortedSet


                                 ArrayList      LinkedList     PriorityQueu             TreeMap       Properties     LinkedHashM
                                                                     e                                                    ap

HashSet             TreeSet                                               ArrayDequ
                                                                              e
Специфика хранения элементов
 Коллекции могут хранить только ссылки на
  объекты.
 Примитивные типы могут быть сохранены в
  коллекции и извлечены из неё за счёт
  автоматических операций упаковки и распаковки в
  классы-оболочки (Boxing и Unboxing, с Java SE 5)
 Начиная с версии Java SE 5, коллекции стали
  типизированными и при их создании
  рекомендуется указывать тип объектов, кот. будут
  храниться в ней
ArrayList<String> arr = new ArrayList<String>();
Методы интерфейса Collection
 boolean add(Object o) – Добавляет элемент в
 коллекцию; возвращает true если элемент был добавлен, и
 false, если коллекция не позволяет сохранять дубликаты, а
 добавляемый элемент таковым является.

 boolean addAll(Collection coll) – Добавляет все
 элементы в коллекцию; возвращает true если какой-либо
 элемент был добавлен.

 void clear() – Удаляет из коллекции все элементы. При
 этом те элементы, на кот. имеются ссылки у других
 элементов, не удаляются из памяти.

 boolean contains(Object o) – Возвращает true если
 коллекция содержит заданный элемент.
Методы интерфейса Collection
(продолжение)
 boolean containsAll(Collection<?> coll) –
 Возвращает true если коллекция содержит все элементы из
 coll.

 boolean equals(Object o) – Возвращает true если
 сравниваемые коллекции равны.

 int hashCode() – Возвращает значение хэш кода для
 данной коллекции. Для любого класса, для которого
 переопределен метод Object.equals() должен быть
 переопределен метод Object.hashCode()

 boolean isEmpty() – Возвращает true если коллекция
 не содержит элементов.
Методы интерфейса Collection
(продолжение)
 Iterator iterator() – Возвращает ссылку на объект
  Iterator, который позволяет выполнить эффективное,
  последовательное прохождение по всем элементам коллекции.

 boolean remove(Object o) – Удаляет из коллекции
  одиночный экземпляр элемента o; возвращает true, если
  коллекция содержит такой элемент.

 boolean removeAll(Collection<?> coll) – Удаляет их
  коллекции все элементы, которые также находятся в коллекции
  coll; возвращает true если какой-либо элемент удален. Никакие
  элементы в результирующей коллекции не будут равны элементам
  коллекции coll. Параметр coll необязателен.
Пример работы с итераторами
List compon = Arrays.asList(this.getComponents());

for (Iterator iter=compon.iterator(); iter.hasNext(); ) {
       Object elem = (Object) iter.next();
       System.out.println(“Компонент: ”, elem.toString();
}
Методы интерфейса Collection
(продолжение)
 boolean retainAll(Collection<?> coll) – Оставляет в
  коллекции только те из входящих в неё элементов, которые входят
  в коллекции coll; возвращает true, если исходная коллекция
  изменена.

 int size() – Возвращает количество элементов в коллекции.


 Object[] toArray() – Возвращает массив, содержащий все
  элементы данной коллекции.
Методы интерфейса Collection
(продолжение)
 <T> T[] toArray(T[] a) – Возвращает массив, содержащий
  все элементы данной коллекции; тип возвращаемого массива
  таков, как тип заданного массива. Если коллекция вмещается в
  заданный массив, она возвращается в массиве. В противном случае
  размещается массив с типом времени выполнения для заданного
  массива и размером равным размеру коллекции.

 String toString() – Возвращает строку со списком элементов
  коллекции в квадратных скобках, через запятую и пробел
Интерфейс List - список
 Представляет собой неупорядоченную коллекцию,
  в которой допустимы дублирующие значения
 Классы, реализующие List:
   LinkedList – связанный список, можно вставлять
    элементы только в начало и конец
   ArrayList – динамический массив с произвольной
    вставкой и удалением элементов
 Элементы, находящиеся в коллекции List
 проиндексированы
Методы интерфейса List
 <T>Elem get(int i) – Возвращает ссылку на
  элемент списка под номером i
 int indexOf(<T> obj) – Возвращает индекс
  (номер) элемента obj. Если объект не найден,
  возвращает -1.
 ListIterator listIterator([int i]) –
  Возвращает итератор списка с дополнительными
  возможностями (по сравнению с Iterator). Если указан
  параметр i, то итератор будет позиционирован на
  элемент с индексом i
Методы интерфейса List
 boolean remove(int i) – удаляет из списка
  элемент с номером i.
 set(int i, <T> obj) – заменяет элемент с номером
  i на указанный элемент obj
 List subList(i1, i2) – возвращает ссылку на
  подсписок, содержащий элементы исходного списка с
  номерами от i1 до i2
Методы класса Collections
 Collections.addAll(c,e1,e2,…,en) – добавляет в
  коллекцию c произвольное число элементов e1, …, en
 frequency(c, obj) – возвращает число вхождений
  элемента obj в коллекцию с
 reverse(list) – обращает порядок следования
  элементов в списке list
 sort(list) – сортирует список в порядке возрастания
  элементов. Сравнение идёт с помощью вызова метода
  e1.compareTo(e2) для элементов списка e1, e2
Класс LinkedList
 порожден от класса AbstractSequentialList
 Реализация связанного двунаправленного списка –
  каждый элемент ссылается на предыдущий и на
  последующий элементы
 Есть методы addFirst() и addLast()
 Создаётся типизированная коллекция, в которой
  могут храниться только элементы типа String:
 LinkedList<String> list = new LinkedList<String>();
 Любая попытка внести в список ссылку на объект
  другого типа приведет к ошибке компиляции:
 list.add( new Double(12.4) );
Пример использования LinkedList
import java.util.*;
public class TestList {
  public static void main(String args[]){
     String s = "test";
     LinkedList<String> list = new LinkedList<String>();
     list.add( "is" );
                                                        Результат:
     list.add( "is" );
     list.add( "a" );              [This, is, is, a, a, null, test]
     list.add( "a" );              The size of the Collection is : 7
     list.add( null );             This is is a a null test
     list.addLast( s );
     list.addFirst("This");
  // list.add( new Double(12.4) ); ошибка компиляции
     System.out.println( list );
       displayCollection( list );
   }
  static void displayCollection( Collection<String> items ) {
      final String BLANK = " ";
      System.out.println("The size of the Collection is : " +
items.size());
      StringBuilder sb = new StringBuilder();
      for( String s : items ) sb.append( s ).append( BLANK );
      System.out.println( sb.toString() );
   }
}
ArrayList
 порожден от класса AbstractList для
  реализации списка, основанного на динамически
  изменяющемся массиве
 Нет методы addFirst() и addLast(), но есть метод
  void add( int index, E element ) для вставки
  элемента в произвольную позицию
Пример использования LinkedList
. . .
 public static void main(String args[]){
     String s = "test";
     List<String> list = new ArrayList<String>();
     list.add( "is" );
     list.add( "is" );
                                                        Результат:
     list.add( "a" );
     list.add( "a" );              [This, is, is, a, a, null, test]
     list.add( null );             The size of the Collection is : 7
     list.add( list.size(), s );   This is is a a null test
     list.add( 0, "This");
  // list.add( new Double(12.4) ); ошибка компиляции
     System.out.println( list );
       displayCollection( list );
   }
. . .

More Related Content

What's hot

Sergii Tsypanov "Performance 1001 Tips"
Sergii Tsypanov "Performance 1001 Tips"Sergii Tsypanov "Performance 1001 Tips"
Sergii Tsypanov "Performance 1001 Tips"LogeekNightUkraine
 
Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1simple_people
 
9. java lecture library
9. java lecture library9. java lecture library
9. java lecture libraryMERA_school
 
10. java lecture generics&collections
10. java lecture generics&collections10. java lecture generics&collections
10. java lecture generics&collectionsMERA_school
 
C#. От основ к эффективному коду
C#. От основ к эффективному кодуC#. От основ к эффективному коду
C#. От основ к эффективному кодуVasiliy Deynega
 
Функциональное программирование на F#
Функциональное программирование на F#Функциональное программирование на F#
Функциональное программирование на F#akrakovetsky
 
AlgoCollections (RUS)
AlgoCollections (RUS)AlgoCollections (RUS)
AlgoCollections (RUS)Anton Bukov
 
Магия метаклассов
Магия метаклассовМагия метаклассов
Магия метаклассовAndrey Zakharevich
 
8 встреча — Язык программирования Python (В. Ананьев)
8 встреча — Язык программирования Python (В. Ананьев)8 встреча — Язык программирования Python (В. Ананьев)
8 встреча — Язык программирования Python (В. Ананьев)Smolensk Computer Science Club
 
Python dict: прошлое, настоящее, будущее
Python dict: прошлое, настоящее, будущееPython dict: прошлое, настоящее, будущее
Python dict: прошлое, настоящее, будущееdelimitry
 
Обработка текста на Haskell - это просто!
Обработка текста на Haskell - это просто!Обработка текста на Haskell - это просто!
Обработка текста на Haskell - это просто!Mike Potanin
 

What's hot (16)

Sergii Tsypanov "Performance 1001 Tips"
Sergii Tsypanov "Performance 1001 Tips"Sergii Tsypanov "Performance 1001 Tips"
Sergii Tsypanov "Performance 1001 Tips"
 
Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1
 
Scala on android
Scala on androidScala on android
Scala on android
 
9. java lecture library
9. java lecture library9. java lecture library
9. java lecture library
 
10. java lecture generics&collections
10. java lecture generics&collections10. java lecture generics&collections
10. java lecture generics&collections
 
Scala - my path
Scala - my pathScala - my path
Scala - my path
 
Scala
ScalaScala
Scala
 
C#. От основ к эффективному коду
C#. От основ к эффективному кодуC#. От основ к эффективному коду
C#. От основ к эффективному коду
 
Функциональное программирование на F#
Функциональное программирование на F#Функциональное программирование на F#
Функциональное программирование на F#
 
AlgoCollections (RUS)
AlgoCollections (RUS)AlgoCollections (RUS)
AlgoCollections (RUS)
 
Магия метаклассов
Магия метаклассовМагия метаклассов
Магия метаклассов
 
8 встреча — Язык программирования Python (В. Ананьев)
8 встреча — Язык программирования Python (В. Ананьев)8 встреча — Язык программирования Python (В. Ананьев)
8 встреча — Язык программирования Python (В. Ананьев)
 
Charming python sc2-8
Charming python sc2-8Charming python sc2-8
Charming python sc2-8
 
Python dict: прошлое, настоящее, будущее
Python dict: прошлое, настоящее, будущееPython dict: прошлое, настоящее, будущее
Python dict: прошлое, настоящее, будущее
 
Xtend
XtendXtend
Xtend
 
Обработка текста на Haskell - это просто!
Обработка текста на Haskell - это просто!Обработка текста на Haskell - это просто!
Обработка текста на Haskell - это просто!
 

Similar to Коллекции в Java

Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.Unguryan Vitaliy
 
Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Unguryan Vitaliy
 
Контейнеры и хранение объектов в ООП
Контейнеры и хранение объектов в ООПКонтейнеры и хранение объектов в ООП
Контейнеры и хранение объектов в ООПitclub_kz
 
04 Стандартная Библиотека
04 Стандартная Библиотека04 Стандартная Библиотека
04 Стандартная Библиотекаphearnot
 
Msu.Center.Lectures.J04 Std Libs
Msu.Center.Lectures.J04 Std LibsMsu.Center.Lectures.J04 Std Libs
Msu.Center.Lectures.J04 Std Libsolegol
 
Лекция 6. Хеш-таблицы
Лекция 6. Хеш-таблицыЛекция 6. Хеш-таблицы
Лекция 6. Хеш-таблицыMikhail Kurnosov
 
Лекция 6: Хеш-таблицы
Лекция 6: Хеш-таблицыЛекция 6: Хеш-таблицы
Лекция 6: Хеш-таблицыMikhail Kurnosov
 

Similar to Коллекции в Java (7)

Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.
 
Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.
 
Контейнеры и хранение объектов в ООП
Контейнеры и хранение объектов в ООПКонтейнеры и хранение объектов в ООП
Контейнеры и хранение объектов в ООП
 
04 Стандартная Библиотека
04 Стандартная Библиотека04 Стандартная Библиотека
04 Стандартная Библиотека
 
Msu.Center.Lectures.J04 Std Libs
Msu.Center.Lectures.J04 Std LibsMsu.Center.Lectures.J04 Std Libs
Msu.Center.Lectures.J04 Std Libs
 
Лекция 6. Хеш-таблицы
Лекция 6. Хеш-таблицыЛекция 6. Хеш-таблицы
Лекция 6. Хеш-таблицы
 
Лекция 6: Хеш-таблицы
Лекция 6: Хеш-таблицыЛекция 6: Хеш-таблицы
Лекция 6: Хеш-таблицы
 

More from metaform

Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...metaform
 
Приступаем к разработке Android приложений
Приступаем к разработке Android приложенийПриступаем к разработке Android приложений
Приступаем к разработке Android приложенийmetaform
 
работа с потоками ввода вывода
работа с потоками ввода выводаработа с потоками ввода вывода
работа с потоками ввода выводаmetaform
 
обработка исключений в Java
обработка исключений в Javaобработка исключений в Java
обработка исключений в Javametaform
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Javametaform
 
создание живых сайтов
создание живых сайтовсоздание живых сайтов
создание живых сайтовmetaform
 
Работа с БД в Java
Работа с БД в JavaРабота с БД в Java
Работа с БД в Javametaform
 
Составление резюме
Составление резюмеСоставление резюме
Составление резюмеmetaform
 
Лекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеЛекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеmetaform
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Javametaform
 
Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Javametaform
 
Базовые операторы Java
Базовые операторы JavaБазовые операторы Java
Базовые операторы Javametaform
 
Глава 3: примитивные типы и операции с ними в Java
Глава 3: примитивные типы и операции с ними в JavaГлава 3: примитивные типы и операции с ними в Java
Глава 3: примитивные типы и операции с ними в Javametaform
 
Глава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansГлава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansmetaform
 
Глава1: Обзор технологии Java
Глава1: Обзор технологии JavaГлава1: Обзор технологии Java
Глава1: Обзор технологии Javametaform
 
Мастерство речи, искусство презентации
Мастерство речи, искусство презентацииМастерство речи, искусство презентации
Мастерство речи, искусство презентацииmetaform
 

More from metaform (16)

Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...Создание графического интерфейса пользователя мобильных Android приложений (ч...
Создание графического интерфейса пользователя мобильных Android приложений (ч...
 
Приступаем к разработке Android приложений
Приступаем к разработке Android приложенийПриступаем к разработке Android приложений
Приступаем к разработке Android приложений
 
работа с потоками ввода вывода
работа с потоками ввода выводаработа с потоками ввода вывода
работа с потоками ввода вывода
 
обработка исключений в Java
обработка исключений в Javaобработка исключений в Java
обработка исключений в Java
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
 
создание живых сайтов
создание живых сайтовсоздание живых сайтов
создание живых сайтов
 
Работа с БД в Java
Работа с БД в JavaРабота с БД в Java
Работа с БД в Java
 
Составление резюме
Составление резюмеСоставление резюме
Составление резюме
 
Лекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеЛекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследование
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
 
Массивы в Java
Массивы в JavaМассивы в Java
Массивы в Java
 
Базовые операторы Java
Базовые операторы JavaБазовые операторы Java
Базовые операторы Java
 
Глава 3: примитивные типы и операции с ними в Java
Глава 3: примитивные типы и операции с ними в JavaГлава 3: примитивные типы и операции с ними в Java
Глава 3: примитивные типы и операции с ними в Java
 
Глава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeansГлава 2: Среда разработки NetBeans
Глава 2: Среда разработки NetBeans
 
Глава1: Обзор технологии Java
Глава1: Обзор технологии JavaГлава1: Обзор технологии Java
Глава1: Обзор технологии Java
 
Мастерство речи, искусство презентации
Мастерство речи, искусство презентацииМастерство речи, искусство презентации
Мастерство речи, искусство презентации
 

Коллекции в Java

  • 1.
  • 2. Структуры данных  «Программы = алгоритмы + структуры данных» (Н. Вирт)  Любая программа работает с данными  Чем сложнее решаемая задача, тем более сложные требуются структуры данных  Простейшая составная структура данных – массив однотипных элементов  Обработка массивов, как правило, проста и быстра
  • 3. Коллекции в Java  Платформы Java содержат набор готовых классов, реализующих механизмы работы со структурами данных  Такие классы называются коллекциями (collections)  Хотя обработка массивов происходит быстрее, в ряде случаев требуется использовать коллекции
  • 4. Предпосылки использования  Необходимость динамического изменения размера структуры данных  Динамическое добавление или удаление элемента  Хранение разнотипных элементов (объектов)  Извлечение и манипуляция данными из БД  Хранение и работа со сложными структурами данных (деревьями, списками, стеками, хеш- таблицами и т.д.)  и т.п.
  • 5. Базовые интерфейсы и классы  Интерфейс Collection предназначен для хранения однородных элементов. Его расширяют интерфейсы:  List – список  Set – множество  Queue – очередь  Интерфейс Map предназначен для создания коллекций, хранящих пары «ключ-значение». Его реализуют классы:  HashMap  IdentityHashMap  LinkedHashMap
  • 6. Иерархия классов и интерфейсов коллекций <<interface>> Collection <<interface>> +add Map +addAll +clear +clear +contains +containsKey +containsAll +containsValue <<interface>> +equals +entrySet Iterator +hashCode +equals +isEmpty +get +iterator +hashCode <<interface>> +isEmpty +remove ListIterator +keySet +removeAll +retainAll +put +size +putAll +toArray +remove +values <<interface> <<interface>> <<interface>> <<interface>> > List Queue SortedMap Set HashTable HashMap <<interface>> <<interface>> Deque SortedSet ArrayList LinkedList PriorityQueu TreeMap Properties LinkedHashM e ap HashSet TreeSet ArrayDequ e
  • 7. Специфика хранения элементов  Коллекции могут хранить только ссылки на объекты.  Примитивные типы могут быть сохранены в коллекции и извлечены из неё за счёт автоматических операций упаковки и распаковки в классы-оболочки (Boxing и Unboxing, с Java SE 5)  Начиная с версии Java SE 5, коллекции стали типизированными и при их создании рекомендуется указывать тип объектов, кот. будут храниться в ней ArrayList<String> arr = new ArrayList<String>();
  • 8. Методы интерфейса Collection  boolean add(Object o) – Добавляет элемент в коллекцию; возвращает true если элемент был добавлен, и false, если коллекция не позволяет сохранять дубликаты, а добавляемый элемент таковым является.  boolean addAll(Collection coll) – Добавляет все элементы в коллекцию; возвращает true если какой-либо элемент был добавлен.  void clear() – Удаляет из коллекции все элементы. При этом те элементы, на кот. имеются ссылки у других элементов, не удаляются из памяти.  boolean contains(Object o) – Возвращает true если коллекция содержит заданный элемент.
  • 9. Методы интерфейса Collection (продолжение)  boolean containsAll(Collection<?> coll) – Возвращает true если коллекция содержит все элементы из coll.  boolean equals(Object o) – Возвращает true если сравниваемые коллекции равны.  int hashCode() – Возвращает значение хэш кода для данной коллекции. Для любого класса, для которого переопределен метод Object.equals() должен быть переопределен метод Object.hashCode()  boolean isEmpty() – Возвращает true если коллекция не содержит элементов.
  • 10. Методы интерфейса Collection (продолжение)  Iterator iterator() – Возвращает ссылку на объект Iterator, который позволяет выполнить эффективное, последовательное прохождение по всем элементам коллекции.  boolean remove(Object o) – Удаляет из коллекции одиночный экземпляр элемента o; возвращает true, если коллекция содержит такой элемент.  boolean removeAll(Collection<?> coll) – Удаляет их коллекции все элементы, которые также находятся в коллекции coll; возвращает true если какой-либо элемент удален. Никакие элементы в результирующей коллекции не будут равны элементам коллекции coll. Параметр coll необязателен.
  • 11. Пример работы с итераторами List compon = Arrays.asList(this.getComponents()); for (Iterator iter=compon.iterator(); iter.hasNext(); ) { Object elem = (Object) iter.next(); System.out.println(“Компонент: ”, elem.toString(); }
  • 12. Методы интерфейса Collection (продолжение)  boolean retainAll(Collection<?> coll) – Оставляет в коллекции только те из входящих в неё элементов, которые входят в коллекции coll; возвращает true, если исходная коллекция изменена.  int size() – Возвращает количество элементов в коллекции.  Object[] toArray() – Возвращает массив, содержащий все элементы данной коллекции.
  • 13. Методы интерфейса Collection (продолжение)  <T> T[] toArray(T[] a) – Возвращает массив, содержащий все элементы данной коллекции; тип возвращаемого массива таков, как тип заданного массива. Если коллекция вмещается в заданный массив, она возвращается в массиве. В противном случае размещается массив с типом времени выполнения для заданного массива и размером равным размеру коллекции.  String toString() – Возвращает строку со списком элементов коллекции в квадратных скобках, через запятую и пробел
  • 14. Интерфейс List - список  Представляет собой неупорядоченную коллекцию, в которой допустимы дублирующие значения  Классы, реализующие List:  LinkedList – связанный список, можно вставлять элементы только в начало и конец  ArrayList – динамический массив с произвольной вставкой и удалением элементов  Элементы, находящиеся в коллекции List проиндексированы
  • 15. Методы интерфейса List  <T>Elem get(int i) – Возвращает ссылку на элемент списка под номером i  int indexOf(<T> obj) – Возвращает индекс (номер) элемента obj. Если объект не найден, возвращает -1.  ListIterator listIterator([int i]) – Возвращает итератор списка с дополнительными возможностями (по сравнению с Iterator). Если указан параметр i, то итератор будет позиционирован на элемент с индексом i
  • 16. Методы интерфейса List  boolean remove(int i) – удаляет из списка элемент с номером i.  set(int i, <T> obj) – заменяет элемент с номером i на указанный элемент obj  List subList(i1, i2) – возвращает ссылку на подсписок, содержащий элементы исходного списка с номерами от i1 до i2
  • 17. Методы класса Collections  Collections.addAll(c,e1,e2,…,en) – добавляет в коллекцию c произвольное число элементов e1, …, en  frequency(c, obj) – возвращает число вхождений элемента obj в коллекцию с  reverse(list) – обращает порядок следования элементов в списке list  sort(list) – сортирует список в порядке возрастания элементов. Сравнение идёт с помощью вызова метода e1.compareTo(e2) для элементов списка e1, e2
  • 18. Класс LinkedList  порожден от класса AbstractSequentialList  Реализация связанного двунаправленного списка – каждый элемент ссылается на предыдущий и на последующий элементы  Есть методы addFirst() и addLast()  Создаётся типизированная коллекция, в которой могут храниться только элементы типа String:  LinkedList<String> list = new LinkedList<String>();  Любая попытка внести в список ссылку на объект другого типа приведет к ошибке компиляции:  list.add( new Double(12.4) );
  • 19. Пример использования LinkedList import java.util.*; public class TestList { public static void main(String args[]){ String s = "test"; LinkedList<String> list = new LinkedList<String>(); list.add( "is" ); Результат: list.add( "is" ); list.add( "a" ); [This, is, is, a, a, null, test] list.add( "a" ); The size of the Collection is : 7 list.add( null ); This is is a a null test list.addLast( s ); list.addFirst("This"); // list.add( new Double(12.4) ); ошибка компиляции System.out.println( list ); displayCollection( list ); } static void displayCollection( Collection<String> items ) { final String BLANK = " "; System.out.println("The size of the Collection is : " + items.size()); StringBuilder sb = new StringBuilder(); for( String s : items ) sb.append( s ).append( BLANK ); System.out.println( sb.toString() ); } }
  • 20. ArrayList  порожден от класса AbstractList для реализации списка, основанного на динамически изменяющемся массиве  Нет методы addFirst() и addLast(), но есть метод void add( int index, E element ) для вставки элемента в произвольную позицию
  • 21. Пример использования LinkedList . . . public static void main(String args[]){ String s = "test"; List<String> list = new ArrayList<String>(); list.add( "is" ); list.add( "is" ); Результат: list.add( "a" ); list.add( "a" ); [This, is, is, a, a, null, test] list.add( null ); The size of the Collection is : 7 list.add( list.size(), s ); This is is a a null test list.add( 0, "This"); // list.add( new Double(12.4) ); ошибка компиляции System.out.println( list ); displayCollection( list ); } . . .