Java 8 如何从java流中提取对象列表?
请注意,此处有3个嵌套级别- 我正在尝试从filtersupergroup列表中的filtersubgroup列表检索筛选器列表。 筛选器有一个属性-fieldname。 我使用以下方法从数据结构中提取了字段名列表:Java 8 如何从java流中提取对象列表?,java-8,Java 8,请注意,此处有3个嵌套级别- 我正在尝试从filtersupergroup列表中的filtersubgroup列表检索筛选器列表。 筛选器有一个属性-fieldname。 我使用以下方法从数据结构中提取了字段名列表: public static List<String> extractFilterFieldsAsAList(QuerySearchRequestDTO requestDTO) { return requestDTO.getFilter().parallelStr
public static List<String> extractFilterFieldsAsAList(QuerySearchRequestDTO requestDTO) {
return requestDTO.getFilter().parallelStream()
.map(new Function<FilterSuperGroup, String>() {
@Override
public String apply(FilterSuperGroup filterSuperGroup) {
return filterSuperGroup.getFilterSubGroup().parallelStream()
.map(new Function<FilterSubGroup, String>() {
@Override
public String apply(FilterSubGroup filterSubGroup) {
return filterSubGroup.getFilter().parallelStream()
.map(new Function<Filter, String>() {
@Override
public String apply(Filter t) {
// TODO Auto-generated method stub
return t.getFieldName();
}
}).collect(Collectors.joining(" "));
}
}).collect(Collectors.joining(" "));
}
}).collect(Collectors.toList());
}
publicstaticlist提取器过滤器字段asalist(querySearchRequestdToRequestdTo){
返回requestDTO.getFilter().parallelStream()
.map(新函数(){
@凌驾
公共字符串应用(FilterSuperGroup FilterSuperGroup){
返回filterSuperGroup.getFilterSubGroup().parallelStream()
.map(新函数(){
@凌驾
公共字符串应用(筛选器子组筛选器子组){
返回filterSubGroup.getFilter().parallelStream()
.map(新函数(){
@凌驾
公共字符串应用(过滤器t){
//TODO自动生成的方法存根
返回t.getFieldName();
}
}).collect(收集器。连接(“”);
}
}).collect(收集器。连接(“”);
}
}).collect(Collectors.toList());
}
问题:但是,在另一个场景(下面)中,我需要一个列表作为输出。
我想用不会破坏流嵌套的东西替换findAny().get()。findAny().get()显然不正确,因为它只从每个嵌套返回一个元素。我该如何解决这个问题
public static List<Filter> prepareFilterListFromRequest(QuerySearchRequestDTO requestDTO) {
List<Filter> listToReturn = new ArrayList<>();
listToReturn.addAll(requestDTO.getFilter().stream()
.map(new Function<FilterSuperGroup, List<Filter>>() {
@Override
public List<Filter> apply(FilterSuperGroup filterSuperGroup) {
return filterSuperGroup.getFilterSubGroup().parallelStream()
.map(new Function<FilterSubGroup, Filter>() {
@Override
public Filter apply(FilterSubGroup filterSubGroup) {
// TODO Auto-generated method stub
return filterSubGroup.getFilter().stream()
.map(new Function<Filter, Filter>() {
@Override
public Filter apply(Filter t) {
// TODO Auto-generated method stub
return t;
}
}).findAny().get();
}
}).collect(Collectors.toList());
}
}).findAny().get()
);
return listToReturn;
}
公共静态列表prepareFilterListFromRequest(querySearchRequestdToRequestdTo){
List listToReturn=新建ArrayList();
listToReturn.addAll(requestDTO.getFilter().stream())
.map(新函数(){
@凌驾
公共列表应用(筛选器超级组筛选器超级组){
返回filterSuperGroup.getFilterSubGroup().parallelStream()
.map(新函数(){
@凌驾
公共筛选器应用(筛选器子组筛选器子组){
//TODO自动生成的方法存根
返回filterSubGroup.getFilter().stream()
.map(新函数(){
@凌驾
公共过滤器应用(过滤器t){
//TODO自动生成的方法存根
返回t;
}
}).findAny().get();
}
}).collect(Collectors.toList());
}
}).findAny().get()
);
返回列表返回;
}
从现在开始使用:请用lambda表达式替换所有这些匿名内部类。使这些代码具有可读性正是它们被添加到语言中的原因。然后,我们有机会认识到代码在做什么…