如何优化List<Filter>为空或非空时的下游API调用逻辑?
优化List调用单参数API的实现方式
你需要遍历List<Filter>调用仅支持单个Filter参数的下游API,同时要处理列表为空时调用一次带null参数的API,现有if-else写法可以通过以下几种更简洁的方式优化:
使用Stream合并流操作
把原列表的流和空列表时的null元素流合并,统一执行forEach,避免分支判断:Stream.concat(filters.stream(), filters.isEmpty() ? Stream.of((Filter) null) : Stream.empty()) .forEach(filter -> callAPI(someId, filter));这里显式指定
(Filter) null是为了避免泛型推断错误,确保流的类型统一为Stream<Filter>。创建临时集合统一处理
根据原列表是否为空,生成包含对应元素的临时集合,再统一遍历调用:List<Filter> tempFilters = filters.isEmpty() ? Collections.singletonList(null) : filters; tempFilters.forEach(filter -> callAPI(someId, filter));Collections.singletonList(null)会创建一个仅包含null的不可变列表,开销极小,适合这种场景。精简原分支写法
如果觉得流操作没必要,也可以简化原逻辑的代码结构,减少冗余:if (filters.isEmpty()) callAPI(someId, null); else filters.forEach(filter -> callAPI(someId, filter));这种写法保留了原逻辑的可读性,只是去掉了多余的大括号,适合追求简洁但不想改变逻辑结构的场景。
内容的提问来源于stack exchange,提问作者confuseddev
相关产品推荐
相关产品推荐

