Специальные списки. Пустой список, список-одиночка, список из массива

Мы уже знакомы с классическим списком ArrayList и неизменяемой обёрткой Collections.unmodifiableList(). Теперь — о некоторых специальных списках.

Список-одиночка

Если нужен неизменяемый список из одного элемента, используется Collections.singletonList(). Например, так:

class TruePunk {
    private final List preferredMusicGenres = Collections.singletonList("punk");
    List getPreferredMusicGenres() {
        return preferredMusicGenres;
    }
}

Пустой список

Если нужен пустой список, можно использовать Collections.emptyList(). Это неизменяемый список нулевого размера.

class PersonIndifferentToMusic {
    List getPreferredMusicGenres() {
        return Collections.emptyList();
    }
}

Список из массива

Мостом между миром массивов и миром списков служит Arrays.asList(). Этот метод создаёт список, который проксирует операции чтения и записи к оригинальному массиву. Его метод add нерабочий (бросает исключение), т. к. размер массива неизменен, а методы get(int index) и set(int index, Object value) читают и записывают массив соответственно.

String[] genresArray = { "metal", "metalcore", "symphonic metal", null, null };
System.out.println(Arrays.toString(genresArray));
genresArray[3] = "post-hardcore";
System.out.println(Arrays.toString(genresArray));
List genresList = Arrays.asList(genresArray);
genresList.set(4, "progressive metal");
System.out.println(Arrays.toString(genresArray));
System.out.println(genresList);
[metal, metalcore, symphonic metal, null, null]
[metal, metalcore, symphonic metal, post-hardcore, null]
[metal, metalcore, symphonic metal, post-hardcore, progressive metal]
[metal, metalcore, symphonic metal, post-hardcore, progressive metal]
Комментарии к уроку

Сообщить об ошибке