我有N个列表从存储库返回数据.我想返回这三个列表中的第一个非空(每个列表执行不同的SQL来获取数据).
问题是我想懒得这样做,所以如果我已经找到了可接受的结果,我就不需要在数据库上执行SQL.我的代码是(修改过的)
@Override
public List<Something> dataService(Data data) {
return firstNonEmptyList(repository.getDataWayOne(data.getParameter()),
repository.getDataWayTwo(data.getParameter()),
repository.getDataWayThree(data.getParameter().getAcessoryParameter())
Collections.singletonList(repository.getDefaultData(data.getParameter()));
}
@SafeVarargs
private final List<Something> firstNonEmptyList(List<Something>... lists) {
for (List<Something> list : lists) {
if (!list.isEmpty()) {
return list;
}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
这有效,但它不是懒惰的.有任何想法吗?