我有一个包含以下信息的信息流:
X :{
Y :{
A :{ "key1" },
B :{"value1"}
C : {}
...
}
}
Stream将包含X对象的List,其中X,Y,A,B和C是Object类型。
我想使用带有值
的Java 8 Lambda创建一个Map {
key1:value1
}
如果对象C不存在,则不应出现键值对。
我尝试使用下面给出的代码来获取密钥列表,但无法创建密钥和值的映射。
X.stream().map(p -> p.getAllYForX())
.filter(Optional::isPresent)
.map(Optional::get)
.filter(p -> checkifCExists(p))
.map(p -> p.getAllAForY(Y))
.filter(Optional::isPresent)
.map(Optional::get)
.map(p -> p.getKeys())
.filter(StringUtils:isNotBlank)
.collect(Collectors.toList());
函数定义如下:
getAllYForX()返回Optional
checkIfCExists()返回一个布尔值,如果C存在于块中
getAllAForY()是私有函数,它返回Optional
getAllBForY()是私有函数,返回Optional
A.getKeys返回String。例如:“key1”
B.getValue返回String。例如:“value1”