gpt4 book ai didi

java - 现代 Java 实践中有关 java 流 dropWhile 示例的问题

转载 作者:行者123 更新时间:2023-12-01 18:04:35 25 4
gpt4 key购买 nike

我现在正在阅读《Modern Java in Action》。在流部分,我不清楚一件事。我们有 list :

//public Dish(String name, boolean vegetarian, int calories, Type type)


List<Dish> specialMenu = Arrays.asList(
new Dish("seasonal fruit", true, 120, Dish.Type.OTHER),
new Dish("prawns", false, 300, Dish.Type.FISH),
new Dish("rice", true, 350, Dish.Type.OTHER),
new Dish("chicken", false, 400, Dish.Type.MEAT),
new Dish("french fries", true, 530, Dish.Type.OTHER));

然后我们使用 dropWhile 来查找大于 320 卡路里的元素。

List <Dish> slicedMenu2 = specialMenu.stream()
.dropWhile(dish -> dish.getCalories() < 320)
.collect(toList());

它说(引自书中)- “dropWhile 操作是 takeWhile 的补充。它会丢弃元素在谓词为假的开始处。一旦谓词评估为真停止并返回所有剩余元素 (...)"

按照我的想法, dropWhile 在谓词为 true 时丢弃元素,并在其计算结果为 false 时停止,但书上的说法相反。我在这里没有得到什么?

最佳答案

看看documentation :

Returns, if this stream is ordered, a stream consisting of the remaining elements of this stream after dropping the longest prefix of elements that match the given predicate.

你的理解是正确的,所以书中肯定有错误。

关于java - 现代 Java 实践中有关 java 流 dropWhile 示例的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60579349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com