Java 9 Tutorial
java9 Useful Resources
Selected Reading
- Java 9 - Miscellaneous Features
- CompletableFuture API Improvements
- Java 9 - Multiresolution Image API
- Optional Class Improvements
- Inner Class Diamond Operator
- Enhanced @Deprecated Annotation
- Try With Resources improvement
- Java 9 - Stream API Improvements
- Java 9 - Process API Improvements
- Java 9 - Private Interface Methods
- Java 9 - Collection Factory Methods
- Java 9 - Multirelease JAR
- Java 9 - Improved JavaDocs
- Java 9 - REPL (JShell)
- Java 9 - Module System
- Java 9 - Environment Setup
- Java 9 - Overview
- Java 9 - Home
java9 Useful Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Java 9 - Collection Factory Methods
Java 9 - Collection Factory Methods
With Java 9, new factory methods are added to List, Set and Map interfaces to create immutable instances. These factory methods are convenience factory methods to create a collection in less verbose and in concise way.
Old way to create collections
import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; pubpc class Tester { pubpc static void main(String []args) { Set<String> set = new HashSet<>(); set.add("A"); set.add("B"); set.add("C"); set = Collections.unmodifiableSet(set); System.out.println(set); List<String> pst = new ArrayList<>(); pst.add("A"); pst.add("B"); pst.add("C"); pst = Collections.unmodifiableList(pst); System.out.println(pst); Map<String, String> map = new HashMap<>(); map.put("A","Apple"); map.put("B","Boy"); map.put("C","Cat"); map = Collections.unmodifiableMap(map); System.out.println(map); } }
Output
It will print the following output.
[A, B, C] [A, B, C] {A=Apple, B=Boy, C=Cat}
New Methods
With java 9, following methods are added to List, Set and Map interfaces along with their overloaded counterparts.
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)
Points to Note
For List and Set interfaces, of(...) method is overloaded to have 0 to 10 parameters and one with var args parameter.
For Map interface, of(...) method is overloaded to have 0 to 10 parameters.
In case of more than 10 paramters for Map interface, ofEntries(...) method can be used accepting var args parameter.
New way to create collections
import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.AbstractMap; import java.util.Map; import java.util.Set; pubpc class Tester { pubpc static void main(String []args) { Set<String> set = Set.of("A", "B", "C"); System.out.println(set); List<String> pst = List.of("A", "B", "C"); System.out.println(pst); Map<String, String> map = Map.of("A","Apple","B","Boy","C","Cat"); System.out.println(map); Map<String, String> map1 = Map.ofEntries ( new AbstractMap.SimpleEntry<>("A","Apple"), new AbstractMap.SimpleEntry<>("B","Boy"), new AbstractMap.SimpleEntry<>("C","Cat")); System.out.println(map1); } }
Output
It will print the following output.
[A, B, C] [A, B, C] {A=Apple, B=Boy, C=Cat} {A=Apple, B=Boy, C=Cat}Advertisements