Одиночный список содержит только этот элемент и не может быть изменен.

польза отCollections.singletonList() в Java? Я понимаю, что он возвращает список с одним элементом. Зачем мне нужен отдельный метод для этого? Как неизменность играет роль здесь?

Существуют ли какие-либо особые полезные варианты использования этого метода, а не просто удобный метод?

 sschuberth16 сент. 2015 г., 14:04
 shabunc15 мая 2013 г., 13:51
Вот пример того, как это может быть полезно -stackoverflow.com/a/1239631/360811

Ответы на вопрос(1)

Решение Вопроса

Javadoc говорит это:

«Возвращает неизменный список, содержащий только указанный объект. Возвращенный список сериализуем.»

Ты спрашиваешь:

Зачем мне нужен отдельный метод для этого?

Для удобства ... чтобы избавить вас от необходимости писать последовательность утверждений для:

создать пустой объект спискадобавить элемент к нему, иоберните его неизменной оберткой.

Как неизменность играет роль здесь?

Это часть спецификации метода; смотри выше.

Существуют ли какие-либо особые полезные варианты использования этого метода, а не просто удобный метод?

Очевидно, что есть случаи, когда удобно использоватьsingletonList метод. Но я не знаю, как бы вы (объективно) различали обычный вариант использования и «особенно полезный» ...

 Stephen C11 янв. 2018 г., 04:24
Может быть. Зависит от того, с чем вы сравниваете. (И я бы сказал, что приложение, которое должно создавать большое количество одноэлементных списков, довольно «странное».)
 Stephen C23 февр. 2015 г., 12:39
Грубо говоря, да. (В этом фрагменте есть две ошибки.)
 Andres Canella17 янв. 2017 г., 19:11
Этот метод также, кажется, экономит некоторую память для создания отдельного списка элементов.
 Ciro Santilli 新疆改造中心 六四事件 法轮功23 февр. 2015 г., 13:20
Некоторые ссылки на источники jdk9-b51 для любопытных:hg.openjdk.java.net/jdk9/jdk9/jdk/file/a0dad230aeb3/src/... , hg.openjdk.java.net/jdk9/jdk9/jdk/file/a0dad230aeb3/src/...
 Ciro Santilli 新疆改造中心 六四事件 法轮功23 февр. 2015 г., 11:29
Это эквивалентноCollections.unmodifiableSet(new Set().add())?

Ваш ответ на вопрос