|
@@ -0,0 +1,48 @@
|
|
|
+import javafx.util.Pair;
|
|
|
+
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+import static javafx.scene.input.KeyCode.T;
|
|
|
+
|
|
|
+public class CollectorsToMap {
|
|
|
+ public static void main(String[] args) {
|
|
|
+ List<Pair<String, Double>> pairArrayList = new ArrayList<>(3);
|
|
|
+ pairArrayList.add(new Pair<>("version", 12.10));
|
|
|
+ pairArrayList.add(new Pair<>("version", 12.19));
|
|
|
+ pairArrayList.add(new Pair<>("version", 6.28));
|
|
|
+ // 生成的 map 集合中只有一个键值对:{version=6.28}
|
|
|
+ Map<String, Double> map = pairArrayList.stream().collect(Collectors.toMap(Pair::getKey, Pair::getValue, (v1, v2) -> v2));
|
|
|
+ System.out.println(map);
|
|
|
+
|
|
|
+ // 不能这么写:
|
|
|
+ String[] departments = new String[]{"RDC", "RDC", "KKB"};
|
|
|
+ // 抛出 IllegalStateException 异常
|
|
|
+ try {
|
|
|
+ Map<Integer, String> map1 = Arrays.stream(departments).collect(Collectors.toMap(String::hashCode, str -> str));
|
|
|
+ System.out.println(map1);
|
|
|
+ } catch (IllegalStateException e) {
|
|
|
+ e.printStackTrace(); // java.lang.IllegalStateException: Duplicate key RDC
|
|
|
+ }
|
|
|
+
|
|
|
+ // -------------------------------------------------------------------------------------------------------------
|
|
|
+
|
|
|
+ String[] departments1 = new String[]{null, "RDC", "KKB"};
|
|
|
+ // 抛出 IllegalStateException 异常
|
|
|
+ try {
|
|
|
+ Map<Integer, String> map1 = Arrays.stream(departments1).collect(Collectors.toMap(String::hashCode, str -> str));
|
|
|
+ System.out.println(map1);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace(); // java.lang.NullPointerException
|
|
|
+ }
|
|
|
+
|
|
|
+ // 可以写为:
|
|
|
+ Map<Integer, String> map2 = Arrays.stream(departments1)
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ key -> key.hashCode(),
|
|
|
+ value -> Optional.ofNullable(value).orElse("null")
|
|
|
+ ));
|
|
|
+ System.out.println(map2);
|
|
|
+ }
|
|
|
+}
|