0

我已经创建了大量的 People bean,并希望将它们存储在某种数据结构中,这样我就能够以最快的速度搜索特定类型的 People bean(例如姓氏为“Sanchez”的 People bean)可能的(顺便说一句,我不想​​使用数据库)。是循环遍历我的 bean 并测试currBean.getLastName().equals("Sanchez")每个 bean 的唯一方法吗?

我希望能够执行以下操作:

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,因此在豆子可以用吗?

4

3 回答 3

2

我很惊讶图书馆里没有这个……是吗?

反正你可以自己写

public interface Condition<T> {
    public bool satisfies(T t);
}

并编写一个通用搜索器,它遍历整个并将此函数应用于每个搜索器,并返回一个新的,只有返回 true 的搜索器。

于 2013-09-03T04:44:44.597 回答
2

myBeansDataStructure您可以使用 Java 8(这是在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());

于 2013-09-03T04:45:02.370 回答
0

你可以试试这个

    List<PeopleBean> list=new ArrayList<>();
    for(PeopleBean i:list){
        if(i.getName().equals("whatEverName")){
            //do something 
        }
    }
于 2013-09-03T04:43:59.347 回答