
3-й семестр / Лекции / 7 - Презентация 2
.pdf
Центр дистанционного обучения
Collections Framework
public interface List<E> {
boolean addAll(Collection<? extends E> c);
boolean addAll(int index, Collection<? extends E> c); boolean removeAll(Collection<?> c);
boolean retainAll(Collection<?> c);
...
}
Все эти методы возвращают true, если было хотя бы одно изменение
online.mirea.ru

Центр дистанционного обучения
Collections Framework
List<String> strings = new ArrayList<>();
strings.add(“A”); strings.add(“B”);
List<Object> objects = new ArrayList<>(); objects.add(1);
objects.add(“C”);
objects.addAll(strings); // OK: Collection<? extends Object>
strings.addAll(objects); // ошибка компиляции
online.mirea.ru

Центр дистанционного обучения
Collections Framework
List<String> A = ...;
List<String> B = ...;
A.removeAll(B);
Содержимое A после выполнения removeAll:
online.mirea.ru

Центр дистанционного обучения
Collections Framework
List<String> A = ...;
List<String> B = ...;
A.retainAll(B);
Содержимое A после выполнения retainAll:
online.mirea.ru

Центр дистанционного обучения
Collections Framework
Collection – произвольная коллекция элементов. В отличие от списка, порядок не определен.
public interface Collection<E> {
...
}
Список является частным случаем коллекции с определенным порядком и доступом по индексу:
public interface List<E> extends Collection<E> {
...
}
online.mirea.ru

Центр дистанционного обучения
Collections Framework
public interface Collection<E> {
int size();
boolean isEmpty(); boolean add(E element); boolean remove(Object o); void clear();
boolean contains(Object o);
...
}
Все операции списка, где нет индексов
online.mirea.ru

Центр дистанционного обучения
Collections Framework
public interface Collection<E> {
boolean addAll(Collection<? extends E> c); boolean removeAll(Collection<?> c); boolean retainAll(Collection<?> c);
...
}
online.mirea.ru

Центр дистанционного обучения
Collections Framework
Цикл foreach работает для любой коллекции (в том числе для списка):
Collection<String> c1 = ...; for (String e : c1) {
System.out.println(e);
}
online.mirea.ru

Центр дистанционного обучения
Collections Framework
Абстракция для множеств:
public interface Set<E> extends Collection<E> {
...
}
Множество:
•Порядок элементов не определен
•Каждый элемент встречается только один раз
Set<Integer> S = ...;
online.mirea.ru

Центр дистанционного обучения
Collections Framework
Реализации интерфейса Set:
•HashSet
•плюсы: оптимальное быстродействие и расход памяти
•минусы: случайный порядок элементов
•TreeSet
•плюсы: определен порядок элементов
•минусы: быстродействие и расход памяти хуже, чем HashSet
•минусы: требуется определить порядок, что не всегда возможно
Set<String> s1 = new HashSet<>();
Set<String> s2 = new TreeSet<>();
online.mirea.ru