Java 9 Collection Factory Methods: удобное создание неизменяемых List, Set, Map
Java 9 добавила фабричные методы в интерфейсы List, Set, Map для создания неизменяемых коллекций лаконично.
Старый способ (Java 7/8)
Set<String> set = new HashSet<>();
set.add("A"); set.add("B"); set.add("C");
set = Collections.unmodifiableSet(set);
List<String> list = new ArrayList<>();
list.add("A"); list.add("B"); list.add("C");
list = Collections.unmodifiableList(list);
Map<String, String> map = new HashMap<>();
map.put("A","Apple"); map.put("B","Boy"); map.put("C","Cat");
map = Collections.unmodifiableMap(map);
Новые методы (Java 9+)
static <E> List<E> of(E e1, E e2, E e3);
static <E> Set<E> of(E e1, E e2, E e3);
static <K,V> Map<K,V> of(K k1, V v1, K k2, V v2, K k3, V v3);
static <K,V> Map<K,V> ofEntries(Map.Entry<? extends K,? extends V>... entries)
Важные моменты
List.ofиSet.ofперегружены: 0–10 параметров + varargs.Map.ofперегружен: 0–10 пар ключ-значение.- Для >10 пар в Map используйте
Map.ofEntries(...)с varargs. - Возвращаемые коллекции неизменяемы — попытка изменения бросает
UnsupportedOperationException. - Не допускают
nullэлементы/ключи/значения.
Новый способ
Set<String> set = Set.of("A", "B", "C");
List<String> list = List.of("A", "B", "C");
Map<String, String> map = Map.of("A","Apple","B","Boy","C","Cat");
Map<String, String> map1 = Map.ofEntries(
new AbstractMap.SimpleEntry<>("A","Apple"),
new AbstractMap.SimpleEntry<>("B","Boy"),
new AbstractMap.SimpleEntry<>("C","Cat")
);
Вывод
[A, B, C]
[A, B, C]
{A=Apple, B=Boy, C=Cat}
{A=Apple, B=Boy, C=Cat}
java
- Освоение операторов Java: типы, синтаксис и практические примеры
- Абстрактные классы и методы в Java: полное руководство
- Интерфейсы в Java: концепции, реализация и лучшие практики
- Try-with-resources в Java: автоматическое управление ресурсами
- Аннотации в Java: типы, размещение и практические примеры
- Освоение Java Autoboxing и Unboxing: практические примеры и лучшие практики
- Java String toLowerCase() и toUpperCase(): преобразование регистра с учётом локали
- Java Collections Framework: полное руководство по эффективным структурам данных
- Java 10: 70+ новых API и улучшений
- Java 10: интерфейс Garbage Collector и параллельный Full GC для G1