gpt4 book ai didi

java - 这段代码是什么?

转载 作者:行者123 更新时间:2023-12-01 14:06:29 25 4
gpt4 key购买 nike

关闭。这个问题需要details or clarity .它目前不接受答案。












想改善这个问题吗?通过 editing this post 添加详细信息并澄清问题.

去年关闭。




Improve this question




有没有人能够以更容易理解的方式编写此代码

 private List<Passenger> getPassengersToRelease() {

return passengerList.stream()
.filter(user -> user.getDestinationFloor() == currentFloor)
.collect(Collectors.toList());
}


我真的无法理解它,并且已经为此苦苦挣扎了几天。谢谢

最佳答案

这是一个老式循环的粗略翻译:

private List<Passenger> getPassengersToRelease() {
List<Passenger> result = new ArrayList<>();
for (Passenger p: passengerList()) {
if (p.getDestinationFloor() == currentFloor) {
result.add(p);
}
}
return result;
}

但是理解基于流的解决方案的更好方法是将其分解:
// give us the passengers as a stream
passengerList.stream()

// remove any passengers from the stream that DO NOT have the given
// destination floor.
.filter(user -> user.getDestinationFloor() == currentFloor)

// put the passengers that remain into a new list.
.collect(Collectors.toList);

唯一棘手的步骤是 filter(...)步。作为参数传递给 filter 的东西是一个 lambda 表达式。基本上,它是一个从 Passenger 映射的内联(未命名)函数。到 boolean值(value)。 user是函数的输入变量,表达式的值 user.getDestinationFloor() == currentFloor是它的输出。

所以过滤器是这样工作的。每个 Passenger在流中,您调用 lambda 表达式。这给你 truefalse .如果您收到 true你传递了 Passenger .如果您收到 false你把它从流中删除;即它被“过滤掉”。

关于java - 这段代码是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61057387/

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