2008-08-13 39 views
37

Lý tưởng nhất là tôi đang tìm một lớp Set hợp lý theo khuôn mẫu. Nó sẽ có tất cả các hoạt động thiết lập tiêu chuẩn như Union, Intersection, Etc, và thu gọn các mục trùng lặp.Có cấu trúc dữ liệu "Đặt" trong .Net không?

Tôi đã kết thúc việc tạo lớp học của riêng mình dựa trên C# Dictionary <> - chỉ sử dụng Khóa.

+0

. Net thực sự không có bộ sưu tập Tập hợp? Thật là một sự thất vọng to lớn. Một ưu điểm khác đối với Java. –

+0

@ d03boy: Vâng, nó có HashSet bây giờ, nhưng sau khi sử dụng nó một chút, tôi nghĩ rằng giao diện thực sự sucks. – Skurmedel

+3

.NET 4 có giao diện ISet cùng với hai triển khai, HashSet và SortedSet –

Trả lời

36

HashSet<T> là khoảng gần nhất bạn sẽ nhận được, tôi nghĩ vậy.

+0

Matt, +1. Điều đó nghe có vẻ giống như những gì anh ta yêu cầu. Có vẻ như đã được thêm vào lâu sau khi bài viết viết mã được viết. –

10

Không, không có nguyên bản nào trong khuôn khổ. Có một triển khai mã nguồn mở mà hầu hết các dự án sử dụng, (tức là nHibernate) được gọi là Iesi.Collections. Dưới đây là một bài viết CodeProject về nó:

http://www.codeproject.com/KB/recipes/sets.aspx

6

Tôi không nghĩ rằng C# có bất cứ điều gì được xây dựng trong, nhưng tôi biết có một vài triển khai trôi nổi trên mạng. Ngoài ra còn có một số bài viết hay về loại này:

This is part 6 của một chuỗi về cấu trúc dữ liệu đại diện hiệu quả. Phần này tập trung vào đại diện cho các bộ trong C#.

An implementation của một bộ sưu tập bộ
An implementation của một lớp bộ
Yet another implementation của một lớp bộ

Và cuối cùng ...

Tôi đã thực sự sử dụng this library bản thân mình làm cơ sở cho việc thực hiện bộ mà tôi đã làm cách đây một năm.

15

Việc triển khai bộ tốt nhất mà tôi đã thấy là một phần của Bộ sưu tập quyền lực tuyệt vời của Wintellect: http://www.codeplex.com/PowerCollections.

Tập thi thể được tìm thấy ở đây:
http://www.codeplex.com/PowerCollections/SourceControl/FileView.aspx?itemId=101886&changeSetId=6259
Nó có tất cả các hoạt động thiết lập dự kiến ​​(công đoàn, giao nhau, vv).

Hy vọng điều này sẽ hữu ích!

9

Bạn đã xem HashSet trong 3.5 chưa?

Các vấn đề liên quan