我的计算机科学课程已经完成,我们的讲师希望我们将Stream和Lambda表达式用于迭代器。我没有看到警告,我根据自己的口味编写了所需的代码,这里是:
def cnn_model_fn2(...):
with tf.device('/gpu:0'):
...
如何将其转换为Stream& Lambda代码? 非常感谢您的回答。
答案 0 :(得分:1)
试试这个
List<User> tempUsers = users.stream()
.filter(tempUser -> tempUser.getFirstName().equals(firstName))
.collect(Collectors.toList());
//TODO do something useful with it
答案 1 :(得分:1)
您可以在一个不使用List的中间变量的语句中减少整个方法:
static List<User> getUsers(String firstName){
return users.stream() //iterate
.filter(u -> u.getFirstName().equals(firstName)) //keep good ones
.collect(Collectors.toList()); //collect them in List
}
u
是一个局部变量,它代表users
列表的每个元素,你可以随意命名.toCollection(ArrayList::new)
将确保您拥有一个ArrayList而不是toList()
,它可以在以后更改但使用它没有问题对类型,可变性,可序列化或线程安全没有任何保证列表返回;如果需要对返回的List进行更多控制,请使用doc 答案 2 :(得分:1)
您可以从用户创建一个流,然后执行class AwesomeClassProvider implements FactoryProvider{
provide: AwesomePipe;
useFactory(pipe: SlicePipe) {
return new AwesomePipe(pipe);
}
deps: [SlicePipe]
}
操作以保留名称等于filter
的所有用户,然后使用firstName
将结果累积到{{1} }}
Collectors.toCollection