Использование List.of для неизменяемого списка с одним элементом вместо Collections.singletonList

#java #java-9

#java #java-9

Вопрос:

Java 9 вводит фабричные методы для создания неизменяемых списков с помощью List.of .

Что больше подходит для создания неизменяемого списка из одного элемента?

     List<String> immutableList1 = List.of("one");
    List<String> immutableList2 = Collections.singletonList("one");
  

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

1. Я не уверен, что лучшая практика singletonList примет только один элемент. но нет List.of .

2. Я имею в виду, что предпочтительнее при создании неизменяемого списка с одним элементом. Я предпочитаю использовать List.of , но это больше подходит для данного варианта использования с точки зрения производительности?

Ответ №1:

Предпочитаю использовать заводской метод

 List<String> immutableList1 = List.of("one");
  

Поскольку они запрещают нулевые элементы, это одно из преимуществ, а также фабричные методы в List интерфейсе удобны для добавления нескольких объектов и создания неизменяемого списка

Они запрещают нулевые элементы. Попытки создать их с нулевыми элементами приводят к исключению NullPointerException.

Где Collections.singletonList допускается null значение

 List<String> l = Collections.singletonList(null);
System.out.println(l);   //[null]
  

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

1. Имейте в виду, что даже вызов contains(null) не поддерживается в списке, созданном с помощью List.of(...)