【发布时间】:2020-08-23 09:00:16
【问题描述】:
如何使用 Stream api 重写方法?
private static List<Transaction> loadTransactionFromFile () throws ParseException, IOException {
List<Transaction> transactions = new ArrayList<>();
List<String> lines = Files.readAllLines(Paths.get(MOVEMENT_LIST.trim()));
lines.remove(0);
for (String line : lines) {
String[] fragments = line.split(",");
if (fragments.length != 8) {
// System.out.println("Wrong line:s " + line);
continue;
}
transactions.add(new Transaction(
fragments[ACCOUNT_TYPE],
fragments[ACCOUNT_NUMBER],
fragments[CURRENCY],
(new SimpleDateFormat(dateFormat)).parse(fragments[DATE_OF_OPERATION]
.trim()),
fragments[RRN],
fragments[INFO].replaceAll("\\d|\\\\+|\\+|RUR|MCC|(Apple Pay-)" +
"|\\.|\\)|\\(|RUSMOSCOW ?|MOSCOW|RUS|J|\\/RU\\/", "")
.trim(),
Double.parseDouble(fragments[INCOME]),
Double.parseDouble(fragments[EXPENSE])
));
}
return transactions;
}
【问题讨论】:
-
一种可能的解决方案:将
foreach-loop 替换为lines.stream().map(line -> line.split(",").filter(fragment -> fragment.length == 8).forEach(transaction.add(new Transaction(...));
标签: java arraylist java-stream