我正在尝试查询所有人员对象的活动目录。有超过 700,000
个结果太多了,无法读入List
。我目前的解决方案是使用分页来获取所有结果,但我宁愿使用 Java-8 Stream-API 来获取它们。不幸的是,我没有在LdapTemplate
上找到任何返回Stream
对象的方法。
我知道这可以返回所有结果:
public List<LdapPerson> findAll() {
return ldapTemplate.search("","(objectClass=person)", mapper);
}
但我正在寻找的是可以返回的东西:
public Stream<LdapPerson> findAll(){
return ldaptemplate.?????????;
}
谁能指出我正确的方向?
不,LdapTemplate
不提供直接从搜索的元素返回Stream<T>
的方法。但是,由于该方法LdapTemplate::search
返回一个List<T>
,因此您可以使用collection.stream()
方法的简单调用来使用可转换为Stream<T>
的任何Collection<T>
的特征:
public Stream<LdapPerson> findAll() {
return ldapTemplate.search("", "(objectClass=person)", mapper).stream();
}