java - How to rewrite a method using Stream api?
问题描述
How to rewrite a method using 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;
}
解决方案
I haven't tested but it should be something like this:
return lines.stream()
.skip(1)
.map(line -> line.split(","))
.filter(l -> l.length==8)
.map(fragments -> 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]))
.collect(Collectors.toList());
推荐阅读
- php - 向 XML 文件添加额外的命名空间
- r - 在 R 中迭代 SpatialPoints 和 SpatialPolygonsDataFrame 合并
- r - 重复采样
- css - 将子内容分别包装到主父宽度
- dart - 将 BLoC 的接收器与另一个 BLoC 连接
- python - 如何使用 doctest 测试嵌套/重新引发的异常?
- python-3.x - 在特定位置写入文件错误Python 3
- java - 错误:“com.android.build.api.transform.TransformException:生成主 dex 列表时出错。”
- ios - iOS 应用程序检索其 URL 方案的最佳方式是什么?
- php - Zend 条码库无法在 Live Server 中使用 codeigniter