我有一个包含Item对象的集合:Set<Item>
Item类具有返回字符串的方法getName()
。
我想使用方法将Set<Item>
转换为Set<String>
Item#getName()
有什么更好的方法,而不是使用forEach?
答案 0 :(得分:6)
itemSet.stream().map(Item::getName).collect(Collectors.toSet())
使用Java Stream解释此method-chain:
.stream
从您的集合中逐项抽取每个项目。请参阅Oracle Processing Data with Java SE 8 Streams, Part 1发表的这篇文章。.map
对集合中每个流对象调用指定的方法(getName
)。此输出是每个项目的name属性,显然是方案中的String
对象。.collect
捕获每个名称输出,并将它们放入新的Set
对象中。此代码完成后,将返回新的Set
。