如何在java中正确过滤数组?

时间:2018-04-12 18:22:10

标签: java

我需要一些帮助,用我的函数过滤数组,我正在获取数据。我试图创建自己的函数来过滤数组,但由于某种原因它没有这样做。任何人都可以检查我的错误代码。我需要帮助来过滤数组。 I.E:当用户键入2个字母进行过滤并根据这些字母显示几个列表。谢谢!

  

这是我的代码:

        public ArrayList<String> cPyList() throws SQLException, NamingException {


            ArrayList<String> cPySearchList = new ArrayList<String>();
            CallableStatement ps = null;
            Connection conn = null;
            ResultSet rs = null;

            try {

                conn = DataUtility.getDataSource().getConnection();

                if (conn == null) {
                    throw new SQLException("Can't get database connection");
                }

                ps = conn.prepareCall(strCPy);
                ps.clearParameters();

                ArrayList list = new ArrayList<>();

                rs = ps.executeQuery();

                while (rs.next()) {

                    cPySearchList .add(rs.getString(1) + " (" + rs.getInt(2) + ")");


                } 
            } finally {

                if (rs != null) {
                    rs.close();
                }
                if (ps != null) {
                    ps.close();
                }
                if (conn != null) {
                    conn.close();
                }

            }
            return cPySearchList ;   


    }

   private static List<String> returnFilteredResult(List<String> lines, String filter) {
        List<String> result = new ArrayList<>();
        for (String line : lines) {
            if (!"cPySearchList".equals(line)) { 
                result.add(line);
            }
        }
        return result;
    } 

2 个答案:

答案 0 :(得分:2)

  1. 您没有在方法中使用filter的值。我想你想这样做
  2. 使用流API

    private static List<String> returnFilteredResult(List<String> list,String filter){ return list.stream().filter(l-> l.contains(filter)).collect(Collectors.toList()); }

答案 1 :(得分:1)

您的想法一般是正确的,但对于过滤,您应该使用containsstartsWith

private static List<String> returnFilteredResult(List<String> lines, String filter) {
    List<String> result = new ArrayList<>();
    for (String line : lines) {
        if (line.contains(filter)) {
            result.add(line);
        }
    }
    return result;
}

public ArrayList<String> cPyList(String filter) throws SQLException, NamingException {
    ArrayList<String> cPySearchList = new ArrayList<String>();
    CallableStatement ps = null;
    Connection conn = null;
    ResultSet rs = null;

    try {
        conn = DataUtility.getDataSource().getConnection();
        if (conn == null) {
            throw new SQLException("Can't get database connection");
        }
        ps = conn.prepareCall(strCPy);
        ps.clearParameters();
        ArrayList list = new ArrayList<>();
        rs = ps.executeQuery();

        while (rs.next()) {
            cPySearchList.add(rs.getString(1) + " (" + rs.getInt(2) + ")");
        }
    } finally {
        if (rs != null) {
            rs.close();
        }
        if (ps != null) {
            ps.close();
        }
        if (conn != null) {
            conn.close();
        }
    }
    return returnFilteredResult(cPySearchList, filter);
}