fittaoee:
私は、値がカスタム型(EmployeeInfo)のリストである次のJava地図を持っています:
Map<String, List<EmployeeInfo>> myMap;
私の目標は、このマップから1つのリストとしてすべての値を取得することです。これまでのところ、私は次のことを試してみましたが、それはまだ動作し行っていません。
// ERROR: The constructor ArrayList<EmployeeInfo>(Collection<List<EmployeeInfo>>) is undefined
List<EmployeeInfo> info = new ArrayList<EmployeeInfo>(myMap.values());
// ERROR: java.lang.ClassCastException: java.util.HashMap$Values cannot be cast to java.util.List
List<EmployeeInfo> info = (List)myMap.values();
誰もが任意のヘルプを提供してもらえますか?前もって感謝します!
サム:
あなたは、変換する必要があるMap<String, List<EmployeeInfo>>
か{[e1,e2], [e3,e4]}
にList<EmployeeInfo>
か[e1,e2,e3,e4]
。リストにはフラットマッピングによって値がこれを行うことができます。ここでストリームを使用してのアプローチは、次のとおりです。
List<EmployeeInfo> list = myMap.values() // gives you [[e1,e2],[e3,e4]]
.stream() // stream over them
.flatMap(List::stream) // convert to [e1,e2,e3,e4]
.collect(Collectors::toList); // collect back