Я хочу уменьшить накладные расходы, объединив свои операции в одну, но, похоже, не совсем понимаю, как завершить мой код без ошибок
В настоящее время у меня есть этот код, который работает:
public Map<String, Invoice> initialize(List<String> paths) {
List<Invoice> invoices = paths
.stream()
.map(Invoice::new)
.collect(Collectors.toList());
invoices
.forEach(e -> {
e.setInvoiceInputStream(reader(e.getInvoicePath()));
e.setInvoiceId(invoiceFinder.getInvoiceId(e.getInvoiceInputStream()));
});
Map<String, Invoice> invoiceMap = invoices
.stream()
.collect(
Collectors.toMap(
e -> e.getInvoiceId(),
e -> e)
);
return invoiceMap;
Однако выполнение этого кода 3 раза кажется пустой тратой времени.
Если я пытаюсь что-то другое, как я получаю ошибки:
return invoicePaths
.stream()
.map(Invoice::new)
.collect(
Collectors.collectingAndThen(
Collectors.toList(), list -> {
list
.forEach(e -> {
e.setInvoiceInputStream(reader(e.getInvoicePath()));
e.setInvoiceId(invoiceFinder.getInvoiceId(e.getInvoiceInputStream()));
});
Конструктор в классе Invoice:
public Invoice(String invoicePath) {
this.invoicePath = invoicePath;
}
Как я могу уменьшить затраты на оптимизацию своего кода?