Java数据结构中的搜索功能

时间:2013-09-03 04:39:24

标签: java search data-structures

我创建了大量的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方法豆用吗?

3 个答案:

答案 0 :(得分:2)

我很惊讶这不在图书馆..或者是它?

无论如何,你可以自己编写

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

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

答案 1 :(得分:2)

您可以使用Java 8(假设myBeansDataStructureCollection某种类型的假设。):

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 
        }
    }