別のリストにある地図のプロパティを持つ新しいリストを作成する方法

リシケシChaudhari:

私が持っていることを想像List<Map<String,Object>>

[{'id':1,'name':'xyz'},{'id':2,'name':'abc'},{'id':3,'name':'pqr'}]

そして私は、上記のリストに名を含む別のリストを生成する必要があります。

List<String>

ループを使用して回避、これは、JavaストリームAPIを使用することによって、これを達成することが可能でしょうか?

アンドリューTobilko:
List<String> names = list.stream()
                         .map(i -> i.get("name").toString())
                         .collect(Collectors.toList());

以来i.get("name").toString()NPEが生じる可能性があります、それはキーが含まれていないマップをフィルタリングするためにスマートです"name"

List<String> names = list.stream()
                         .filter(i -> i.containsKey("name"))
                         .map(i -> i.get("name").toString())
                         .collect(Collectors.toList());

若しくは

List<String> names = list.stream()
                         .map(i -> i.get("name"))
                         .filter(Objects::nonNull)
                         .map(Object::toString)
                         .collect(Collectors.toList());

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=225421&siteId=1