Java 如何在servlet jsp/jsp servlet中过滤arraylist结果?

Java 如何在servlet jsp/jsp servlet中过滤arraylist结果?,java,filter,arraylist,Java,Filter,Arraylist,你好,朋友,在我的项目中,我有一个arraylist,在jsp页面表中显示数据库给定内容的结果,我想在其中添加一个过滤器,只显示列表中匹配的内容 the table which is coming out is as: student_id class_id student_name 1x0001 10 Ashish 1x2001 11 Alex 1x2002 11 Atr. 1x0001 1

你好,朋友,在我的项目中,我有一个arraylist,在jsp页面表中显示数据库给定内容的结果,我想在其中添加一个过滤器,只显示列表中匹配的内容

the table which is coming out is as:
student_id class_id student_name
1x0001        10         Ashish
1x2001        11         Alex
1x2002        11         Atr.
1x0001        10         Alok

.............going on...
但我希望结果只显示类_id::11的页面,并删除其他结果。如何做到这一点

List dataList = new ArrayList();
rs = s.getResultSet();
      while (rs.next ()){
        //Add records into data list
        dataList.add(rs.getInt("class_id"));
        dataList.add(rs.getString("name"));
        dataList.add(rs.getString("student_id"));
      }
然后通过获取arraylist在servlet中显示结果: 我想要的是将问题显示为一个过滤表,arraylist而不是DB为:

the table which is coming(result???) out on servlet is as:
    student_id class_id student_name
    1x2001        11         Alex
    1x2002        11         Atr.

    .............going on...

问题在哪里。像Adeel说的那样,在SQL查询中这样放置条件,
where class\u id=?

您应该在SQL层进行过滤

此外,您应该使用Bean/Class/Struct来保存每条记录,而不是将所有数据以非结构化方式堆积到单个ArrayList中

但是,以下代码会满足您的要求:

public class FilterTest {
    public static int COLS_PER_RECORD = 3;

    public static void main(String[] args) {
        ArrayList dataList = populateTestData();
        printRecords(dataList);
        ArrayList filtered = filterForClassId(dataList, 2);
        printRecords(filtered);
    }

    private static ArrayList populateTestData() {
        ArrayList dataList = new ArrayList();
        ResultSet rs = s.getResultSet();
        while (rs.next()) {
            dataList.add(rs.getInt("class_id"));
            dataList.add(rs.getString("name"));
            dataList.add(rs.getString("student_id"));
        }
        return dataList;
    }

    private static ArrayList filterForClassId(ArrayList dataList,
            int classIdToFilterFor) {
        ArrayList filtered = new ArrayList();
        Integer classIdToFilterForInteger = new Integer(classIdToFilterFor);
        for (int i = 0; i < dataList.size(); i += COLS_PER_RECORD) {
            if (classIdToFilterForInteger.equals(dataList.get(i))) {
                for (int j = 0; j < COLS_PER_RECORD; j++) {
                    filtered.add(dataList.get(i + j));
                }
            }
        }
        return filtered;
    }

    private static void printRecords(ArrayList dataList) {
        System.out.println("----");
        for (int i = 0; i < dataList.size(); i += COLS_PER_RECORD) {
            System.out.println("class_id=" + dataList.get(i) + " name="
                    + dataList.get(i + 1) + " student_id="
                    + dataList.get(i + 2));
        }
        System.out.println("----");
    }
}
公共类过滤器测试{
公共静态int COLS_PER_记录=3;
公共静态void main(字符串[]args){
ArrayList dataList=populateTestData();
打印记录(数据列表);
ArrayList filtered=filterForClassId(数据列表,2);
打印记录(过滤);
}
私有静态ArrayList populateTestData(){
ArrayList dataList=新的ArrayList();
ResultSet rs=s.getResultSet();
while(rs.next()){
dataList.add(rs.getInt(“class_id”);
add(rs.getString(“name”);
添加(rs.getString(“学生id”);
}
返回数据列表;
}
专用静态ArrayList筛选器ForClassID(ArrayList数据列表,
int classIdToFilterFor){
ArrayList filtered=新的ArrayList();
整数classIdToFilterForInteger=新整数(classIdToFilterFor);
for(int i=0;i