Spec-Zone .ru
спецификации, руководства, описания, API
След: Наборы
Урок: Реализации
Реализации удобства
Домашняя страница > Наборы > Реализации

Реализации удобства

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

Представление списка Массива

Arrays.asList метод возвращает a List представление его параметра массива. Изменения к List запишите через в массив и наоборот. Размер набора является размером массива и не может быть изменен. Если add или remove к методу обращаются List, UnsupportedOperationException закончится.

Нормальная эксплуатация этой реализации как мост между основанными на массиве и основанными на наборе API. Это позволяет Вам передавать массив к методу, ожидая a Collection или a List. Однако, у этой реализации также есть другое использование. Если Вы нуждаетесь в фиксированном размере List, это более эффективно чем любой общего назначения List реализация. Это - идиома.

List<String> list = Arrays.asList(new String[size]);

Отметьте, что ссылка на отступающий массив не сохраняется.

Неизменный Список Многократной копии

Иногда Вы будете нуждаться в неизменном List состоя из многократных копий того же самого элемента. Collections.nCopies метод возвращает такой список. У этой реализации есть два основного использования. Первое должно инициализировать недавно создаваемый List; например, предположите, что Вы хотите ArrayList первоначально состоя из 1 000 null элементы. Следующее колдовство добивается цели.

List<Type> list = new ArrayList<Type>(Collections.nCopies(1000, (Type)null);

Конечно, начальное значение каждого элемента не должно быть null. Второе основное использование должно вырастить существующее List. Например, предположите, что Вы хотите добавить 69 копий строки "fruit bat" до конца a List<String>. Это не является четким, почему Вы хотели бы сделать такую вещь, но позвольте нам только предположить, что Вы сделали. Следующее - то, как Вы сделали бы это.

lovablePets.addAll(Collections.nCopies(69, "fruit bat"));

При использовании формы addAll это берет и индексирование и a Collection, можно добавить новые элементы к середине a List вместо до конца этого.

Неизменный Набор Singleton

Иногда Вы будете нуждаться в неизменном одиночном элементе Set, который состоит из единственного, указанного элемента. Collections.singleton метод возвращает такой Set. Одно использование этой реализации должно удалить все возникновения указанного элемента от a Collection.

c.removeAll(Collections.singleton(e));

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

job.values().removeAll(Collections.singleton(LAWYER));

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

Пустое множество, Список, и Константы Карты

Collections class обеспечивает методы, чтобы возвратить пустое Set, List, и MapemptySet, emptyList, и emptyMap. Основное использование этих констант как вводится к методам, которые берут a Collection из значений, когда Вы не хотите обеспечивать любые значения вообще, как в этом примере.

tourist.declarePurchases(Collections.emptySet());

Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Реализации Обертки
Следующая страница: Сводка Реализаций