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