更改Set <!-?->中的值

时间:2018-09-23 11:35:59

标签: java collections

我有一个包含Item对象的集合:Set<Item> Item类具有返回字符串的方法getName()。 我想使用方法将Set<Item>转换为Set<String> Item#getName()

有什么更好的方法,而不是使用forEach?

1 个答案:

答案 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

enter image description here