Mel*_*ard 3 java arrays collections
public class MapCheck {
public static void main(String[] args) {
Map<String, String> data = new HashMap<String, String>();
data.put("John", "Taxi Driver");
data.put("Mark", "Professional Killer");
Map<String, String> data1 = new HashMap<String, String>();
data1.put("John", "Driver");
data1.put("Mark", "Murderer");
Map<String, String> data3 = new HashMap<String, String>();
data3.putAll(data);
data3.putAll(data1);
System.out.println(data3);
}
}
Run Code Online (Sandbox Code Playgroud)
我有几个包含相同键的地图,它们的值不同.我想合并他们.但是当我将它们与通常合并时,putAll()它只给出了最新插入的键的值.
上面代码的输出是 {John=Driver, Mark=Murderer}
有没有一种方法可以获得与键相关的所有值,并将其作为数组给出
{John=[Taxi Driver, Driver], Mark=[Professional Killer, Murderer]}
Run Code Online (Sandbox Code Playgroud)
Map<String, List<String>>使用Java 8 可以很容易地生成Stream:
Map<String, List<String>>
merged =
Stream.of(data,data1) // create a Stream<Map<String,String> of all Maps
.flatMap(map->map.entrySet().stream()) // map all the entries of all the
// Maps into a
// Stream<Map.Entry<String,String>>
.collect(Collectors.groupingBy(Map.Entry::getKey, // group entries by key
Collectors.mapping(Map.Entry::getValue,
Collectors.toList())));
Run Code Online (Sandbox Code Playgroud)
输出Map:
{John=[Taxi Driver, Driver], Mark=[Professional Killer, Murderer]}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |