Tôi muốn sử dụng Luồng Java để chạy qua Danh sách POJO, chẳng hạn như danh sách List<A>
bên dưới và chuyển đổi nó thành Bản đồ Map<String, Set<String>>
.Giá trị Java Stream Collectors.toMap là một Set
Ví dụ, lớp A là:
class A {
public String name;
public String property;
}
tôi đã viết mã bên dưới cho thu thập các giá trị thành một bản đồ Map<String, String>
:
final List<A> as = new ArrayList<>();
// the list as is populated ...
// works if there are no duplicates for name
final Map<String, String> m = as.stream().collect(Collectors.toMap(x -> x.name, x -> x.property));
Tuy nhiên, vì có thể có nhiều POJO với cùng name
, tôi muốn giá trị của bản đồ là Set
. Tất cả property
Chuỗi cho cùng một khóa name
sẽ đi vào cùng một tập hợp.
Làm cách nào để thực hiện điều này?
// how do i create a stream such that all properties of the same name get into a set under the key name
final Map<String, Set<String>> m = ???
Chỉnh sửa nhỏ, tôi nghĩ rằng nó nên nhập tệp java.util.stream.Collectors tĩnh. *; – tkja
Woops, sửa chữa: D – Nevay
Bạn không cần dấu ngoặc đơn xung quanh một tham số lambda duy nhất. – shmosel