Collectors.toSet()
không bảo vệ trật tự. Tôi có thể sử dụng danh sách thay vào đó, nhưng tôi muốn chỉ ra rằng các bộ sưu tập kết quả không cho phép sao chép phần tử, đó là chính xác những gì Set
giao diện cho.Có một Bộ sưu tập nào thu thập được một bộ đơn đặt hàng không?
Trả lời
Bạn có thể sử dụng toCollection
và cung cấp ví dụ cụ thể của tập hợp bạn muốn. Ví dụ, nếu bạn muốn giữ gìn trật tự chèn:
Set<MyClass> set = myStream.collect(Collectors.toCollection(LinkedHashSet::new));
Ví dụ:
public class Test {
public static final void main(String[] args) {
List<String> list = Arrays.asList("b", "c", "a");
Set<String> linkedSet =
list.stream().collect(Collectors.toCollection(LinkedHashSet::new));
Set<String> collectorToSet =
list.stream().collect(Collectors.toSet());
System.out.println(linkedSet); //[b, c, a]
System.out.println(collectorToSet); //[a, b, c]
}
}
Thật tuyệt, đó chính xác là những gì tôi cần, nhưng tôi nghĩ rằng 'ImmutableSet' của Guava sẽ tốt hơn trong trường hợp của tôi. Bất kỳ ý tưởng về cách tôi có thể làm cho một nhà sưu tập thu thập để 'ImmutableSet'? Các instance của nó được xây dựng với một 'ImmutableSet.Builder' mà không phải là một' Collection', vì vậy tôi không thể tìm ra cách bạn tạo một 'Supplier' cho' Collectors.toCollection() 'trong trường hợp đó. – gvlasov
@Susei Tôi sẽ cố gắng xem xét nó. Một thay thế sẽ là trả lại một tập hợp không thể sửa đổi được. Ví dụ: 'Set
@Susei Gần nhất tôi tìm thấy: 'Set
- 1. Luồng Java: Thu thập bộ sưu tập lồng nhau
- 2. Clojure: tìm hiểu xem bộ sưu tập có khả năng thu thập được không
- 3. Kết hợp luồng Bộ sưu tập vào một Bộ sưu tập - Java 8
- 4. Có phương pháp Luồng Java tương đương với bộ sưu tập của Scala "thu thập" không?
- 5. Hibernate: đặt hàng một Bộ
- 6. LINQ: Tìm kiếm một bộ sưu tập trong một bộ sưu tập cho một đối tượng duy nhất
- 7. Thu hồi bộ sưu tập rác PHP
- 8. C# Đặt bộ sưu tập?
- 9. Bộ sưu tập và chuỗi thu gom rác
- 10. Làm thế nào để tạo một phần cấu hình có chứa một bộ sưu tập các bộ sưu tập?
- 11. Thu thập bộ sưu tập MongoDB bằng cách sử dụng regex
- 12. Chuyển đổi một bộ sưu tập Java thành một bộ sưu tập Scala
- 13. Magento: Nhận bộ sưu tập các mục đặt hàng cho một bộ sưu tập sản phẩm được lọc bởi thuộc tính
- 14. Có hàng đợi và bộ sưu tập ngăn xếp không?
- 15. Đơn đặt hàng được đồng bộ hóa
- 16. Sắp xếp bộ sưu tập dựa trên một bộ sưu tập khác
- 17. cầu dẹt một bộ sưu tập
- 18. Java Collections: Thu thập đèo trẻ em như bộ sưu tập của cha mẹ
- 19. Java - Tạo một bộ sưu tập đối tượng thân thiện
- 20. Bạn có nên thu thập thế hệ trẻ đầu tiên trong bộ sưu tập rác đầy đủ không?
- 21. Làm thế nào để bộ nhớ cache một bộ sưu tập trong Magento?
- 22. Bộ sưu tập Java không có Bản đồ như một phần của khung tuyển tập
- 23. Làm cách nào tôi có thể thu thập luồng Java 8 vào một bộ sưu tập không thể đoán được của Guava?
- 24. Java 8 Lambda - Bộ sưu tập Lọc theo một bộ sưu tập
- 25. WPF: Bộ sưu tập liên kết với Bộ sưu tập vào một ListBox với các nhóm
- 26. Java không thu thập bộ nhớ rác
- 27. Bộ sưu tập được đồng bộ hóa
- 28. Bộ sưu tập chung được sưu tầm
- 29. tài sản Thu thập các đối tượng trong bộ sưu tập
- 30. backbone.js trống một bộ sưu tập
Tôi không nghĩ rằng một điều như vậy tồn tại. Tôi biết tôi cũng cần một cái, và tôi phải tự viết. – markspace
'SortedSet' có hoạt động không? Nếu không, tùy chỉnh là con đường để đi. – AntonH
@AntonH Không, tôi muốn O (1) hoạt động với O (log n). – gvlasov