Например, если карта, как показано ниже:Стиль потока java8 для извлечения внутренней части карты через список полей?
{
"k1": {
"k2": {
"k3": {
"k4": "v"
}
}
}
}
и список полей ["k1","k2","k3"]
, мне нужно, чтобы получить часть {"k4": "v"}
.
Ниже мой код java7 стиле:
// Ignore the map building code.
Map map1 = new HashMap();
Map map2 = new HashMap();
Map map3 = new HashMap();
Map map4 = new HashMap();
map4.put("k4", "v");
map3.put("k3", map4);
map2.put("k2", map3);
map1.put("k1", map2);
Map map = map1;
System.out.println(map); //=> {k1={k2={k3={k4=v}}}}
// Code to be transformed to java8 style
List<String> fields = Arrays.asList("k1", "k2", "k3");
for(String field: fields) {
map = (Map) map.get(field);
}
System.out.println(map); //=> {k4=v}
Тогда как преобразовать выше кода в Java 8 стиле потока?
@tobias_k: это отлично работает параллельно, как превращение потока в параллельном бы только распараллелить функцию состав, в то время как окончательный 'apply' вызов всегда последователен (и не зависят от потока). – Holger
@ Голосовать, ваши ответы заставляют меня головокружение. это очень мило – Eugene