Tag: flatmap

如何将一个函数应用于列表的列表

我知道flatMap操作,但不完全明白它是如何工作的。 我有一个class级: class Days() { List dates; } 然后我有这些对象的列表 List month 我想对这个对象中的每一个日期做一些事情(例如把它们转换成一个字符串),然后找回所有这些字符串的单个列表。 如何做到这一点?

为什么Stream.flatMap不能接受集合?

给出以下作为数据类的例子: class Country { List<Region> regions = new ArrayList<>(); List<Region> getRegions() { return regions; } } class Region { String getName() { return "some name"; } } 假设我会有一个国家名单 List<Country> countries = new ArrayList<>(); 我想把这些流到他们的地区和他们相应的名字,我想做以下事情: countries.stream().flatMap(Country::getRegions).map(Region::getName)… 但是,由于“getRegions”的返回值是Collection(List),而不是由FlatMap方法接受的Stream,所以该代码不能编译。 但是因为我知道任何Collection都可以通过它的Collection.stream()方法进行流式处理,这应该不是问题。 我仍然被迫写下如下: countries.stream().flatMap(c -> c.getRegions().stream()).map(Region::getName)… 哪个(给予更丰富的上下文)比前者更不可读。 问题是,有什么原因,我错过了,因为这是庞大的? 在我的框架中,我有很多的例子,我不得不采取这种方式,总是让我酸酸的味道。 (猜猜我只需要将Kotlin添加到我们的项目中,并使用带有Collection:p或do的flatMap方法来扩展Stream类)