【发布时间】:2025-12-03 16:25:01
【问题描述】:
我想要完成的是在我的流映射中运行一个方法,基于如果返回正确,将其添加到成功列表中,该列表将进入集合的映射键,如果失败,它将被添加到集合值中的失败列表中:
List<String> success = new ArrayList<>();
List<String> failure = new ArrayList<>();
Map<List<String>,List<String>> masterLista = new HashMap<>();
masterLista.put(success, failure);
masterLista = list.stream().map(l -> {
String newS=serviceApi.getClearSongName(l);
if(newS!=null){
//Here the return should update the sucess list
return serviceApi.getClearSongName(l);
} else{
//Here the return should update the failure list
return l;
}
}).collect(Collectors.toList());
实际上集合的映射不是必需的,我唯一想要的是在 Stream 的映射内部已经更新了成功和失败的两个列表,以避免在单个列表中进行进一步处理。
编辑:我正在使用流,因为实际上目标是使用 parallelStream
【问题讨论】:
-
我只会使用 for 循环。
-
另外,使用可变哈希映射键是一个非常糟糕的主意。
-
看起来你真正想要的是
Pair<String, String>甚至可能是Seq<Try<String>>(Vavr)。 -
不确定在这种情况下为什么需要 HashMap。我想你误解了地图的使用
-
只需使用普通的 for 循环或 for-each 循环。为什么需要在这里使用 Streams?它是一个简单的 for 循环列表,其中包含 if-else,并根据条件将列表元素添加为成功或失败。
标签: java java-8 java-stream