我有一个 ArrayList 类名为 MainList
像
public class MainList{
private String sname;
private String lname;
private String address;
private String branch;
private String city;
//getter and setter
}
此外,我还有另一个基于此类中的值的pojo类,我将执行Lname,地址,分支和城市的搜索.. 搜索
public class Search{
private String searchSname;
//getter and setter
}
我使用以下代码执行搜索
List<MainList> myList = new ArrayList<>();
//injecting bean to insert data
Search search=new search();
//injecting bean ti insert data
List<MainList> data = myList.stream()
.filter(p-> p.getSname().equals(search.getSearchSname()))
.findFirst()
.orElse(null);
如果search.getSearchSname()包含任何值但我想制作senario,其中如果search.getSearchSname()的值为null,则返回nullPointerException它将返回MainList的第一个对象,否则根据值执行搜索操作
正如我向您展示一个非常简单的示例,但我想在非常大的数据中实现它,并且有可能没有给出一些输入,我需要在过滤时跳过它我可以通过if条件实现它但是如果任何超出范围的范围然后PLZ帮助我...
答案 0 :(得分:0)
List<MainList> myList = new ArrayList<>();
Search search = new search();
List<MainList> data;
if (search.getSearchSname() == null) {
data = myList.get(0);
} else {
data = myList.stream()
.filter(p-> p.getSname().equals(search.getSearchSname()))
.findFirst()
.orElse(null);
}
答案 1 :(得分:0)
只需在过滤器中添加空检查:
MainList firstMatch = myList.stream()
.filter(p -> search.getSearchSname() == null
|| p.getSname().equals(search.getSearchSname()))
.findFirst()
.orElse(null);