|
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 состоя из многократных копий того же самого элемента. метод возвращает такой список. У этой реализации есть два основного использования. Первое должно инициализировать недавно создаваемый 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 вместо до конца этого.
Иногда Вы будете нуждаться в неизменном одиночном элементе Set, который состоит из единственного, указанного элемента. метод возвращает такой Set. Одно использование этой реализации должно удалить все возникновения указанного элемента от a Collection.
c.removeAll(Collections.singleton(e));
Связанная идиома удаляет все элементы, которые отображаются на указанное значение от a Map. Например, предположите, что у Вас есть a Map — job — это отображает людей на их строку работы, и предположите, что Вы хотите устранить всех адвокатов. Следующая острота сделает дело.
job.values().removeAll(Collections.singleton(LAWYER));
Еще одно использование этой реализации должно обеспечить единственное входное значение для метода, который пишется, чтобы принять набор значений.
class обеспечивает методы, чтобы возвратить пустое Set, List, и Map — , , и . Основное использование этих констант как вводится к методам, которые берут a Collection из значений, когда Вы не хотите обеспечивать любые значения вообще, как в этом примере.
tourist.declarePurchases(Collections.emptySet());