簡體   English   中英

Java-如何過濾2D字符串數組

[英]Java - How to filter 2D string array

我有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”之類的特定條件? 我只找到了過濾整數的幫助。 提前致謝。

您可以使用:

Arrays.stream(rowData).flatMap(Arrays::stream)
                      .filter(s -> s.equals("AUDI") || s.equals("16890.0"))
                      .forEach(System.out::println);

輸出:

AUDI

16890.0

AUDI

16890.0

如果您對使用的數據結構沒有限制,則使用列表更容易處理僅基於值的過濾。 為了顯示:

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());

當然,您可以根據需要將其轉換為數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM