- filteredRecords = records.stream().filter(record -> {
- for (int i = 0; i < record.size(); i++) {
- String columnContent = record.get(i);
- if (columnContent.toLowerCase().contains(filter)) {
- return true;
- }
+ filteredRows = IntStream.range(0, records.size())
+ .filter(k -> isMatch(records.get(k), filter))
+ .toArray();
+ }
+
+ private static boolean isMatch(CSVRecord record, String filterString) {
+ if (filterString == null || filterString.isEmpty())
+ return true;
+
+ for (int i = 0; i < record.size(); i++) {
+ String columnContent = record.get(i);
+ if (columnContent.toLowerCase().contains(filterString)) {
+ return true;