Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Функциональность Collection

Читайте также:
  1. Methods of collection and analysis of primary date
  2. Интерфейс Collection
  3. Функциональность List
  4. Функциональность Map
  5. Функциональность Set
  6. Функциональность СМС-информатора

Приведенная ниже таблица показывает все, что вы можете делать с Collection (за исключением тех методов, которые автоматически приходят от Object), и таким образом, все, что вы можете делать с Set или List. (List также5 имеет дополнительную функциональность.) Map не наследуются от Collection, о нем будет рассказано отдельно.

boolean add(Object) Гарантирует, что контейнер содержит аргумент. Возвращает false, если не может добавить аргумент. (Это “необязательный” метод описывается позже в этой главе.)
boolean addAll(Collection) Добавляет все элементы аргумента. Возвращает true, если любые элементы были добавлены. (“Необязательно”)
void clear() Удаляет все элементы контейнера. (“Необязательно”)
boolean contains(Object) true, если контейнер содержит аргумент.
boolean containsAll(Collection) true, если контейнер содержит все элементы аргумента.
boolean isEmpty() true, если контейнер не имеет элементов.
Iterator iterator() Возвращает Iterator, который вы можете использовать для обхода элементов контейнера.
boolean remove(Object) Если аргумент присутствует в контейнере, один экземпляр этого элемента будет удален. Возвращает true, если произошло удаление. (“Необязательно”)
boolean removeAll(Collection) Удаляет все элементы, содержащиеся в аргументе. Возвращает true, если произошло любое удаление. (“Необязательно”)
boolean retainAll(Collection) Остаются только те элементы, которые содержатся в аргументе (в теории множеств называется “пересечением”). Возвращает true, если произошли любые изменения. (“Необязательно”)
int size() Возвращает число элементов контейнера.
Object[] toArray() Возвращает массив, содержащий все элементы контейнера.
Object[] toArray(Object[] a) Возвращает массив, содержащий все элементы контейнера, чей тип, скорее массив, а не простой Object (вы должны привести массив к правильному типу).

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

Приведенный ниже пример демонстрирует все эти методы. Кроме того, он работает со всем, что наследовано от Collection, и ArrayList используется в качестве “наиболее общего заменителя”:

//: c09:Collection1.java// То, что вы можете делать с Collections.import java.util.*;import com.bruceeckel.util.*; public class Collection1 { public static void main(String[] args) { Collection c = new ArrayList(); Collections2.fill(c, Collections2.countries, 10); c.add("ten"); c.add("eleven"); System.out.println(c); // Создание массива из List: Object[] array = c.toArray(); // Создание массива String из List: String[] str = (String[])c.toArray(new String[1]); // Нахождение максимального и минимального элементов; это // имеет разный смысл в зависимости от способа // реализации интерфейса Comparable: System.out.println("Collections.max(c) = " + Collections.max(c)); System.out.println("Collections.min(c) = " + Collections.min(c)); // Добавление одного Collection в другой Collection Collection c2 = new ArrayList(); Collections2.fill(c2, Collections2.countries, 10); c.addAll(c2); System.out.println(c); c.remove(CountryCapitals.pairs[0][0]); System.out.println(c); c.remove(CountryCapitals.pairs[1][0]); System.out.println(c); // Удаление всех компонентов, присутствующих в // аргументе: c.removeAll(c2); System.out.println(c); c.addAll(c2); System.out.println(c); // Есть ли элемент в этом Collection? String val = CountryCapitals.pairs[3][0]; System.out.println("c.contains(" + val + ") = " + c.contains(val)); // Есть ли Collection в этом Collection? System.out.println("c.containsAll(c2) = "+ c.containsAll(c2)); Collection c3 = ((List)c).subList(3, 5); // Сохранить элементы, которые есть в обоих // c2 и c3 (пересечение множеств): c2.retainAll(c3); System.out.println(c); // Отбросить все элементы // из c2, которые есть в c3: c2.removeAll(c3); System.out.println("c.isEmpty() = " + c.isEmpty()); c = new ArrayList(); Collections2.fill(c, Collections2.countries, 10); System.out.println(c); c.clear(); // Удалить все элементы System.out.println("after c.clear():"); System.out.println(c); }} ///:~

ArrayList создаются с различными наборами данных и приводятся к базовому типу объекта Collection, так что достаточно ясно, что ничего, кроме интерфейса Collection не будет использоваться. main() использует простые упражнения, чтобы показать все методы Collection.

Следующий раздел описывает различные реализации: List, Set и Map и для каждого случая указывает (отмечено звездочкой) что вы должны выбирать по умолчанию. Вы заметите, что допустимые классы Vector, Stack и Hashtable не включены, потому что во всех случаях предпочтительней использовать контейнерные классы Java 2.




Дата добавления: 2015-09-11; просмотров: 24 | Поможем написать вашу работу | Нарушение авторских прав

Возвращение массива | Класс Arrays | Сравнение элементов массива | Сортировка массива | Поиск в отсортированном массиве | Введение в контейнеры | Распечатка контейнера | Заполнение контейнеров | Неудобство контейнеров: неизвестный тип | Итераторы |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав