Страницы

Поиск по вопросам

пятница, 7 декабря 2018 г.

Зачем нужен метод Arrays.asList()?

Зачем нужен метод Arrays.asList() ? В чем его суть?


Ответ

Как и следует из документации: формирует список на основе массива. Массив при этом используется для внутреннего представления списка. Таким образом сохраняется связь между списком и исходным массивом:
изменения в массиве отразятся на списке:
String[] a = { "foo", "bar", "baz"}; List list = Arrays.asList(a); System.out.println(list); // [foo, bar, baz]
a[0] = "aaa"; System.out.println(list); // [aaa, bar, baz] изменения в списке отразятся на массиве:
String[] a = { "foo", "bar", "baz"}; List list = Arrays.asList(a); System.out.println(list); // [foo, bar, baz]
list.set(0, "bbb"); System.out.println(Arrays.toString(a)); // [bbb, bar, baz]
Если массив содержит объекты, очевидно, и массив и список будут ссылаться на одни и те же экземпляры:
Object[] a = { new Object(), new Object(), new Object()}; List list = Arrays.asList(a); System.out.println(a[0] == list.get(0)); // true

Как уже упомянул @Oleg Chiruhin, тот факт, что метод принимает в качестве параметра массив в форме аргументов переменной длины, позволяет использовать его для относительно удобной инициализации списков:
List list = Arrays.asList(new Foo(...), new Foo(...), new Foo(...));
сравните с
List list1 = new ArrayList<>(); list.add(new Foo(...)); list.add(new Foo(...)); list.add(new Foo(...));

Комментариев нет:

Отправить комментарий