Tôi đang gặp khó khăn để có được giao điểm của một số Danh sách trên Java. Những gì tôi đang làm điều này là: tôi nhận được (cho phép nói) 3 Danh sách các số nguyên:Nhận giao lộ của một số Danh sách bằng cách sử dụng retainAll trong Java
danh sách 1: [2, 2, 2, 2, 5, 5]
danh sách 2: [2 , 2, 103]
danh sách 3: [2, 431]
tôi đang làm đơn retainAll để là người đầu tiên sử dụng mỗi danh sách còn lại:
list1.retainAll(list2);
list1.retainAll(list3);
Và tôi nhận này kết quả:
list1: [2, 2, 2, 2]
Nhưng tôi mong đợi để có được điều này một:
list1: [2]
... Kể từ yếu tố duy nhất tất cả danh sách cổ phiếu là một 2 và không bốn 2.
tôi biết điều này có lẽ là hành vi mong đợi của hàm retainAll, nhưng tôi cần để có được những kết quả tôi đã đề cập ở trên.
Bất kỳ trợ giúp nào?
Chỉnh sửa: Sử dụng HashSet để không cho phép trùng lặp sẽ không thực hiện thủ thuật. Trong trường hợp này, ví dụ:
danh sách 1: [2, 2, 2, 2, 5, 5]
danh sách 2: [2, 2, 103]
danh sách 3: [2 , 2, 2, 431]
tôi cần để có được một kết quả của:
danh sách 1: [2, 2] (vì tất cả các danh sách có ít nhất một cặp 2 của)
Thay vì
danh sách 1: [2]
Trước tiên, bạn cần nêu rõ những gì bạn mong đợi. Bạn có muốn giữ lại các giá trị giống nhau và ở cùng một chỉ mục trong cả hai danh sách không? Hoặc bạn có muốn giữ các phần tử có trong cả hai danh sách và chỉ giữ cùng một số như trong danh sách thứ hai? Hay cái gì khác? –