ich denke, die eleganteste Art und Weise in javastream
und Collectors
zu verwenden ist.
Sie auf diese Weise erreichen können:
List<Tuple2<String, String>> list = new ArrayList<>();
list.add(new Tuple2<>("first", "second"));
list.add(new Tuple2<>("third", "four"));
list.add(new Tuple2<>("five", "six"));
list.add(new Tuple2<>("seven", "eight"));
list.add(new Tuple2<>("nine", "ten"));
System.out.println("List of Tuple2s:" + list);
//convert list of tupples to Map with one line
Map<String, String> resultMap = list.stream()
.collect(Collectors.toMap(Tuple2::_1, Tuple2::_2));
System.out.println("Map of Tuples2s: "+resultMap);
Ausgang:
List of Tuple2s:[(first,second), (third,four), (five,six), (seven,eight), (nine,ten)]
Map of Tuples2s: {nine=ten, third=four, seven=eight, five=six, first=second}
Aber was doppelte Schlüssel ?? Wenn wir ein anderes Element zur Liste hinzufügen, wie: list.add(new Tuple2<>("first", "ten"));
Ausnahme occures:
Exception in thread "main" java.lang.IllegalStateException: Schlüssel Sekunde bei java.util.stream.Collectors.lambda $ throwingMerger $ 0 Duplizieren (Collectors.java:133) bei java.util.HashMap.merge (HashMap.java:1253)
Wenn Sie nicht sicher sind, ob Sie Duplikate haben, können Sie tun können:
Map<String, String> resultMap = list.stream()
.collect(Collectors.toMap(Tuple2::_1, Tuple2::_2,
(x, y) -> {
System.out.println("duplicate key!");
return x;
}));
und vermeiden Sie das Überschreiben von Artikeln in Map
.
Ausgang:
List of Tuple2s:[(first,second), (third,four), (five,six), (seven,eight), (nine,ten), (first,ten)]
duplicate key!
Map of Tuples2s: {nine=ten, third=four, seven=eight, five=six, first=second}
Sie wollen so etwas wie das? http://StackOverflow.com/a/33345553/4969370 – Androbin