我创建了大量的People bean,并希望将它们存储在某种数据结构中,在那里我可以搜索特定类型的People bean(例如,姓氏为“Sanchez”的People bean)尽可能快(我不想使用DB)。是遍历我的bean并为每个bean测试currBean.getLastName().equals("Sanchez")
的唯一方法吗?
我希望能够做到以下几点:
List<PeopleBean> myPeople = myBeansDataStructure.getAll(new PeopleBean("John", "Sanchez", 36),
new Comparator<PeopleBean>() {
@Override
public int compare(PeopleBean b1, PeopleBean b2) {
// search conditions
}
});
并让它返回与搜索匹配的bean集合。我的搜索将始终具有相同的“种类”,即,我将搜索具有特定姓氏,名字或年龄(或三者的某些排列)的bean,因此可以使用重写的equals方法豆用吗?
答案 0 :(得分:2)
我很惊讶这不在图书馆..或者是它?
无论如何,你可以自己编写
public interface Condition<T> {
public bool satisfies(T t);
}
并编写一个通用的搜索器,它遍历整个并将此函数应用于每个函数,并返回一个仅返回true的新函数。
答案 1 :(得分:2)
您可以使用Java 8(假设myBeansDataStructure
是Collection
某种类型的假设。):
List<PeopleBean> myPeople = myBeansDataStructure.stream().filter(person -> person.getLastName().equals("Sanchez")).collect(Collectors.toList());
或者您可以尝试这样的事情:
List<PeopleBean> myPeople = myBeansDataStructure.stream().map(PeopleBean::getLastName).filter(lastName -> lastName.equals("Sanchez")).collect(Collectors.toList());
答案 2 :(得分:0)
你可以试试这个
List<PeopleBean> list=new ArrayList<>();
for(PeopleBean i:list){
if(i.getName().equals("whatEverName")){
//do something
}
}