Có thể nhận tập con của bộ lọc theo một số bộ so sánh và có mọi cập nhật về bộ sưu tập gốc và tập con của nó có tất cả thay đổi không?Nhận tập hợp con của bộ bằng cách sử dụng bộ so sánh
Trả lời
Cuộc gọi NavigableSet.subSet()
có thể thực hiện những gì bạn muốn. NavigableSet
là tập hợp được sắp xếp có khả năng tạo tập con là "lượt xem" của tập hợp cơ bản. Các chế độ xem này được giới hạn bởi các giá trị mà bạn cung cấp, sử dụng số Comparator
được cung cấp khi tạo bộ hoặc thứ tự tự nhiên của các giá trị. Việc triển khai phổ biến nhất là TreeSet
. Ví dụ: bạn có thể làm điều này:
NavigableSet<String> set = new TreeSet<>(
Arrays.asList("b", "e", "a", "d", "c"));
System.out.println(set);
Kết quả là [a, b, c, d, e]
như bạn mong muốn. Bây giờ bạn có thể tạo một tập hợp con, ví dụ từ "b" thông qua "d" bao gồm:
NavigableSet<String> set2 = set.subSet("b", true, "d", true);
System.out.println(set2);
Ở đây, đầu ra là [b, c, d]
. Bây giờ nếu bạn thêm một số yếu tố để các thiết lập ban đầu mà là cả bên trong và bên ngoài các giới hạn, những thay đổi quan điểm tập hợp con để chỉ bao gồm những gì đang được thêm vào bên trong:
set.add("a1");
set.add("c1");
set.add("e1");
System.out.println(set2);
Đầu ra là [b, c, c1, d]
.
Ok, và những gì tôi muốn là tạo ra tập con không phải với việc cung cấp từ "b" đến "d", nhưng bởi một số so sánh tức là tập con chọn cho tôi mỗi giây. Tôi đoán rằng việc lựa chọn không liên tục là khó khăn nên không có những người chung chung như vậy. Nhưng nếu TreeSet có nghĩa là so sánh chia các phần tử trên i.e lẻ và thậm chí. Tôi muốn subSet phần đầu tiên hoặc thứ hai với việc sử dụng so sánh đó. – userbb
@userbb OK, tôi không nghĩ rằng so sánh TreeSet có thể làm những gì bạn muốn. Bộ so sánh thiết lập một * tổng số thứ tự * của tất cả các phần tử trong tập hợp, và nó là một thuộc tính cố định của tập hợp, được thiết lập tại thời điểm tạo. Bạn không thể đặt nó trong một hoạt động truy vấn, ví dụ. Nghe có vẻ như bạn cần một cái gì đó giống như một bộ lọc với một vị từ, nhưng tôi nghĩ bạn cần phải giải thích trường hợp sử dụng của bạn chi tiết hơn. Tôi và những người khác đang làm một chút công bằng của đoán. –
- 1. JUnit 4 so sánh Bộ sưu tập
- 2. Bằng và so sánh với Bộ
- 3. Bộ chọn con bằng cách sử dụng `querySelectorAll` trên bộ sưu tập DOM
- 4. So sánh một mongo khác trên hai bộ sưu tập
- 5. Sử dụng Bộ so sánh để đặt hàng ArrayList Java
- 6. cách tạo bộ lọc $ góc để lọc bộ so sánh chuỗi trường hợp nhạy cảm
- 7. Thực hiện bộ so sánh giao diện
- 8. Nhận chuỗi con từ chuỗi sử dụng so sánh văn hóa nhạy cảm
- 9. So sánh cấu trúc trong C bằng cách sử dụng memcmp() và số học con trỏ
- 10. Golang: Tại sao bộ chọn cho con trỏ là bất hợp pháp sau khi so sánh?
- 11. Sắp xếp bộ sưu tập trong bộ sưu tập bằng cách sử dụng LINQ
- 12. So sánh chuỗi PHP bằng cách sử dụng '=='
- 13. JQuery - Nhận giá trị bằng cách sử dụng bộ chọn
- 14. So sánh Bộ hẹn giờ với DispatcherTimer
- 15. Bộ điều hợp dereference cho bộ lặp của con trỏ
- 16. Cách tích hợp Google Analytics vào GWT bằng cách sử dụng tập lệnh không đồng bộ
- 17. So sánh hai bộ sưu tập của enums với Hibernate hoặc SQL
- 18. Micro-benchmark so sánh các bộ sưu tập Scala có thể thay đổi được với các bộ sưu tập java.util.concurrent. *
- 19. So sánh hai cấu trúc bằng cách sử dụng ==
- 20. Does std :: map gán bộ so sánh của nó?
- 21. Hai chuỗi so sánh bằng cách sử dụng '=' nhưng không thành công trong 'thích' so sánh
- 22. Cách Gửi/Nhận trong Bộ KH & ĐT bằng cách sử dụng tất cả bộ xử lý
- 23. Mong muốn tải bộ sưu tập con bằng NHibernate
- 24. Kiểm tra xem các loại bộ dữ liệu là tập hợp con của nhau hay không
- 25. Làm cách nào để sử dụng bộ so sánh với loại is_transparent?
- 26. Liệt kê thông qua một tập hợp con của một Bộ sưu tập trong C#?
- 27. So sánh hai tài liệu bằng cách sử dụng regex
- 28. cách so sánh với mục trước trong bộ lặp `mỗi`?
- 29. FireStore nhận được tất cả tài liệu và bộ sưu tập con của bộ sưu tập gốc
- 30. Hiệu quả nhận được tập hợp con của chuỗi "startingWith" ra khỏi một tập hợp
Bạn có muốn thêm một loại 'trình kích hoạt' vào bộ sưu tập của mình, bộ lọc này có lọc các phần tử được thêm vào danh sách của bạn không? –
Tôi không nghĩ rằng điều này là có thể làm cho một bộ sưu tập thường xuyên, vì lớp học sẽ phải thực hiện một số loại giao diện quan sát được. Hoặc là, hoặc bạn phải kiểm tra tất cả các yếu tố mỗi lần chỉ trong trường hợp một cái gì đó thay đổi trong bộ sưu tập ban đầu. –
'NavigableSet.subSet()' có làm những gì bạn muốn không? –