' Все коллекции поддерживают перебор в синтаксисе foreach, как в приведенном примере. Позднее в этой главе будет рассмотрена другая, более гибкая концепция
Добавление групп элементов
Семейства Arrays и Collections в java.util содержат вспомогательные методы для включения групп элементов в коллекции. Метод Arrays.asList() получает либо массив, либо список элементов, разделенных запятыми, и преобразует его в объект List. Метод Collections.addAUQ получает объект Collection и либо массив, либо список, разделенный запятыми, и добавляет элементы в Collection. Пример:
//• hoiding/AddingGroups java
// Добавление групп элементов в объекты Collection
import java.util *;
public class AddingGroups {
public static void main(String[] args) { Collection
new ArrayList
}
} ///:-
Конструктор Collection может получать другой объект Collection, используемый для его инициализации, поэтому для передачи исходных данных можно воспользоваться методом Arrays.asList(). Однако метод Collections.addAll() работает намного быстрее, и вы с таким же успехом можете сконструировать Collection без элементов, а затем вызвать Collections.addAll — этот способ считается предпочтительным.
Методу Collection.addAll() в аргументе может передаваться только другой объект Collection, поэтому он уступает в гибкости методам Arrays.asList() и Collections.addAll(), использующим переменные списки аргументов.
Также можно использовать вывод Arrays.asList() напрямую, в виде List, но в этом случае нижележащим представлением будет массив, не допускающий изменения размеров. Вызов add() или delete() для такого списка приведет к попытке изменения размера массива, а это приведет к ошибке во время выполнения.
Недостаток Arrays.asList() заключается в том, что он пытается «вычислить» итоговый тип List, не обращая внимания на то, что ему присваивается. Иногда это создает проблемы:
//: hoiding/AsListInference.java // Arrays.asListO makes its best guess about type, import java.util.*;
class Snow {}
class Powder extends Snow {} class Light extends Powder {} class Heavy extends Powder {} class Crusty extends Snow {} class Slush extends Snow {}
public class AsListInference {
public static void main(String[] args) { List
new CrustyO. new SlushO. new PowderO);
// He компилируется-// List
II Collections.addAllО работает нормально:
List
Col 1 ecti ons. addAl 1 (snow3, new LightO. new HeavyO);
II Передача информации посредством уточнения // типа аргумента
List
}
} ///:-
При попытке создания snow2, Arrays.asList() создает List
С контейнерами Map дело обстоит сложнее, и стандартная библиотека Java не предоставляет средств их автоматической инициализации, кроме как по содержимому другого объекта Map.
Вывод содержимого контейнеров