【问题标题】:How to filter arraylist results in servlet-jsp/jsp-servlet?如何过滤 servlet-jsp/jsp-servlet 中的 arraylist 结果?
【发布时间】:2011-05-14 06:56:01
【问题描述】:

你好朋友在我的项目中,我有一个数组列表,在给定数据库内容的 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...

但我希望结果只显示 class_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...

【问题讨论】:

    标签: java filter arraylist


    【解决方案1】:

    问题出在哪里。像这样将条件放在 SQL 查询中,where class_id = ?

    【讨论】:

      【解决方案2】:

      应该像 Adeel 所说的那样在 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("----");
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-30
        • 1970-01-01
        • 1970-01-01
        • 2015-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多