我有2D对象数组rowData [] []
数组初始化如下:
List rows = new ArrayList();
while(rs.next()) {
String[] row = new String[columnCount];
for(int i = 1; i <= columnCount; i++){
row[i-1] = rs.getString(i);
}
rows.add(row);
}
String[][] rowData = (String[][])rows.toArray(new String[rows.size()][columnCount]);
System.out.println(Arrays.deepToString(rowData));
给我输出:
[[AUDI, A1, 16890.0, BLAU, 6292, 2018-03-12, 82, 1.0 TFSI, BENZIN, KLEINWAGEN, 1, 9PGAUBB646B8BA022], [AUDI, A5, 39500.0, GOLD, 25000, 2016-07-04, 224, 2.0 TFSI, BENZIN, LIMOUSINE, 1, GWAUZZZ8P8BA06423]]
是否可以过滤掉“ Audi”或“ 16890.0”之类的特定条件? 我只找到了过滤整数的帮助。 预先感谢。
答案 0 :(得分:2)
您可以使用:
Arrays.stream(rowData).flatMap(Arrays::stream)
.filter(s -> s.equals("AUDI") || s.equals("16890.0"))
.forEach(System.out::println);
输出:
奥迪
16890.0
奥迪
16890.0
答案 1 :(得分:1)
如果您对所使用的数据结构没有限制,则使用列表更容易处理仅基于值的过滤。为了说明:
List<List> result = new ArrayList<>();
while (rs.next()) {
List row = new ArrayList(columnCount);
for (int i = 1; i <= columnCount; i++) {
row.add(rs.getString(i));
}
result.add(row);
}
result.stream().filter(list -> list.contains(lookupValue)).collect(Collectors.toList());
当然,您可以根据需要将其转换为数组。