我需要一些帮助,用我的函数过滤数组,我正在获取数据。我试图创建自己的函数来过滤数组,但由于某种原因它没有这样做。任何人都可以检查我的错误代码。我需要帮助来过滤数组。 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;
}
答案 0 :(得分:2)
filter
的值。我想你想这样做使用流API
private static List<String> returnFilteredResult(List<String> list,String
filter){
return list.stream().filter(l->
l.contains(filter)).collect(Collectors.toList());
}
答案 1 :(得分:1)
您的想法一般是正确的,但对于过滤,您应该使用contains
或startsWith
。
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);
}