リシケシ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());