Java 8 在获得所需数量的结果后,如何退出Java流处理?

Java 8 在获得所需数量的结果后,如何退出Java流处理?,java-8,java-stream,Java 8,Java Stream,我有以下代码,它使用Stream API查找一个集合中热量超过300卡路里的前3个元素的名称: List<Dish> dishes = .... List<String> unhealthyDishes = dishes.stream() .filter(dish -> dish.getCalories() > 300)

我有以下代码,它使用Stream API查找一个集合中热量超过300卡路里的前3个元素的名称:

List<Dish> dishes = ....
List<String> unhealthyDishes = dishes.stream()
                                     .filter(dish -> dish.getCalories() > 300)
                                     .map(dish -> dish.getName())
                                     .limit(3)
                                     .collect(Collectors.toList());

在传统的基于迭代器的命令式方法中,我可以对结果进行计数,从而在获得所需数量的元素后退出迭代循环。但是上面的代码似乎贯穿了整个集合。我怎样才能停止它这样做,并在我得到我需要的3个元素后停止?

你怎么知道它也会检查其他元素?我刚刚设置了一个小测试:

String[]words={a,a,a,aa}; List shortWords=Arrays.streamwords .filterword->{ System.out.PrintlChecking+word; 返回word.length==1; } .mapString::长度 .limit3 .toList; System.out.printlnshortWords; 结果是:

checking a
checking a
checking a
[1, 1, 1]

这回答了你的问题吗?这个问题出了什么问题值得投否决票吗?