使用Java 9,新的工厂方法被添加到List,Set和Map接口以创建不可变实例.这些工厂方法是方便工厂方法,以较简洁和简洁的方式创建集合.
创建集合的旧方法
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;public class Tester { public static void main(String []args) { Setset = new HashSet<>(); set.add("A"); set.add("B"); set.add("C"); set = Collections.unmodifiableSet(set); System.out.println(set); List list = new ArrayList<>(); list.add("A"); list.add("B"); list.add("C"); list = Collections.unmodifiableList(list); System.out.println(list); Map map = new HashMap<>(); map.put("A","Apple"); map.put("B","Boy"); map.put("C","Cat"); map = Collections.unmodifiableMap(map); System.out.println(map); }}
输出
它将打印以下输出.
[A, B, C][A, B, C]{A=Apple, B=Boy, C=Cat}
新方法
使用java 9,将以下方法添加到List,Set和Map接口中与他们的重载对应物.
staticList of(E e1, E e2, E e3);static Set of(E e1, E e2, E e3);static Map of(K k1, V v1, K k2, V v2, K k3, V v3);static Map ofEntries(Map.Entry extends K,? extends V>... entries)
注意事项
对于List和Set接口,(...)方法被重载为0到10个参数,一个带有var args参数.
对于Map接口,(...)方法重载为0到10个参数.
如果Map接口的参数超过10个,则可以使用ofEntries(...)方法接受var args参数.
新创建集合的方法
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;public class Tester { public static void main(String []args) { Setset = Set.of("A", "B", "C"); System.out.println(set); List list = List.of("A", "B", "C"); System.out.println(list); Map map = Map.of("A","Apple","B","Boy","C","Cat"); System.out.println(map); Map map1 = Map.ofEntries ( new AbstractMap.SimpleEntry<>("A","Apple"), new AbstractMap.SimpleEntry<>("B","Boy"), new AbstractMap.SimpleEntry<>("C","Cat")); System.out.println(map1); }}
输出
它将打印以下输出.
[A, B, C][A, B, C]{A=Apple, B=Boy, C=Cat}{A=Apple, B=Boy, C=Cat}