Mã sau đây chuyển đổi danh sách đối tượng thành danh sách các đối tượng tùy chọn. Có cách nào thanh lịch để thực hiện điều này bằng cách sử dụng luồng của Java 8 không?Chuyển đổi danh sách các đối tượng thành danh sách các đối tượng tùy chọn trong Java
List<Object> originalList = Arrays.asList(new Object(), new Object());
List<Optional<Object>> convertedList = new ArrayList<>();
for (Object object : originalList) {
convertedList.add(Optional.of(object));
}
Tôi đã thử đoạn mã sau đây.
List<Optional<Object>> convertedList = originalList.stream().map((o) -> Optional.of(o));
Tuy nhiên điều này mang lại những lỗi biên dịch sau:
of(T) in Optional cannot be applied to (java.lang.Object)
này được sử dụng lớp java.util.Optional chứ không phải là một ổi.
Cảm ơn bạn đã trả lời. Tôi cắt mã cho các mục đích của ví dụ. Danh sách chuyển đổi sẽ có các giá trị vắng mặt được thêm vào nó sau này trong trường hợp sử dụng của tôi và bản gốcList không chứa các giá trị rỗng. – kentsurrey
Trong khi tôi muốn giới thiệu các hình thức ref phương thức trên các hình thức lambda, không ngốc mình rằng bạn đang "tránh tạo ra một lambda" bằng cách sử dụng hình thức tham khảo phương pháp. Phương thức refs được chuyển đổi sang các giao diện chức năng thông qua cùng một máy móc như lambdas. Tuy nhiên, những quyết định này nên được thực hiện trên cơ sở khả năng đọc/bảo trì mã 99.999% thời gian, vì vậy bạn chỉ nên đi với những gì dễ đọc hơn - mà thường là phương pháp ref. –