В данной статье мы рассмотрим дополнения к Collections API в Java 9.
В Java 9 были добавлены новые фабричные методы в интерфейсы List, Set и Map, которые позволяют нам создавать неизменяемые экземпляры.
В Java 8 мы использовали следующий подход:
package net.proselyte.java9.collections;
import java.util.*;
public class ImmutableCollectionsJava8Demo {
public static void main(String[] args) {
List integerList = new ArrayList<>();
integerList.add(1);
integerList.add(2);
integerList.add(3);
integerList = Collections.unmodifiableList(integerList);
System.out.println("integerList: " + integerList);
Set integerSet = new TreeSet<>();
integerSet.add(1);
integerSet.add(2);
integerSet.add(3);
integerSet = Collections.unmodifiableSet(integerSet);
System.out.println("integerSet: " + integerSet);
Map<Integer, String> integerStringMap = new HashMap<>();
integerStringMap.put(1, "One");
integerStringMap.put(2, "Two");
integerStringMap.put(3, "Three");
integerStringMap = Collections.unmodifiableMap(integerStringMap);
System.out.println(integerStringMap);
}
}
В результате запуска данного класса мы получим следующий результат:
integerList: [1, 2, 3]
integerSet: [1, 2, 3]
{1=One, 2=Two, 3=Three}
Process finished with exit code 0
Рассмотрим подход, которые мы можем применить в Java 9:
package net.proselyte.java9.collections;
import java.util.AbstractMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class CollectionsFactoryMethodsDemo {
public static void main(String[] args) {
List integerList = List.of(1, 2, 3);
System.out.println("integerList: " + integerList);
Set integerSet = Set.of(1,2,3);
System.out.println("integerSet: " + integerSet);
Map<Integer, String> integerStringMap = Map.ofEntries(
new AbstractMap.SimpleEntry<>(1, "One"),
new AbstractMap.SimpleEntry<>(2, "Two"),
new AbstractMap.SimpleEntry<>(3, "Three")
);
System.out.println(integerStringMap);
}
}
В результате выполнения данной программы мы получим следующий результат:
integerList: [1, 2, 3]
integerSet: [2, 3, 1]
{2=Two, 3=Three, 1=One}
Process finished with exit code 0
На этом мы заканчиваем обзор новых фабричных методов в Collections API.
В следующей статье мы рассмотрим улучшения, касающиеся Stream API, которые были добавлены в Java 9.