0

我已经Collection<Student>并且想要返回学生列表与过滤器进行比较。为此,我有以下代码

public Collection<Student> findStudents(String filter) {

    return // ?
}

我的问题是使用 WhereIn/Contains 的返回语句应该是什么?

4

3 回答 3

3

使用谷歌番石榴:

过滤一个Collection学生姓名

public Collection<String> findStudents(String filter) {

    Iterable<String> filteredStudents = Iterables.filter(listOfStudentNames, Predicates.containsPattern(filter));
    return Lists.newArrayList(filteredStudents);
}

过滤一个Collection<Student>

public Collection<Student> findStudents(String filter) {
  Iterable<Student> filteredStudents = Iterables.filter(listOfStudents, new Predicate<Student>() {
    @Override
    public boolean apply(Student student) {
      return student.getName().contains(filter);
    }
  }
}
return Lists.newArrayList(filteredStudents);

例子:

Iterable<String> filtered = Iterables.filter(Arrays.asList("asdf", "bsdf", "eeadd", "asdfeeee", "123"), Predicates.containsPattern("df"));

filtered现在包含[asdf, bsdf, asdfeeee]

于 2013-09-20T05:55:32.757 回答
1

例如像这样(返回新列表,不修改原始列表)

public Collection<Student> findStudents(List<Student> orgininalList, String filter) {
    List<Student> filteredList = new ArrayList<Student>();
    for(Student s : originalList) {
        if(s.getName().contains(filter)) {
            filterdList.add(s);
        }
    }
    return filteredList;
}

PS 注意“cPu1”的回答,Google Guava 是非常有用的框架。

于 2013-09-20T05:42:38.820 回答
0

尝试类似的东西

public Collection<Student> findStudents(String filter) {
  List<Student> students  = new ArrayList<Student>();

   //  filter  data 
   //if criteria match add to   students  

    return students;   
}
于 2013-09-20T05:31:27.963 回答