2010-01-16 75 views
18

Tôi đang xây dựng một ứng dụng trong C#, tuy nhiên tôi mới sử dụng ngôn ngữ mặc dù nó khá dễ học vì nó quá giống với Java.Cấu trúc dữ liệu C#

Tuy nhiên, tôi bị lạc với cấu trúc dữ liệu vì tôi chưa tìm thấy danh sách các cấu trúc dữ liệu có sẵn toàn diện với các phương pháp của chúng như cách Java có chúng.

Bất kỳ ai cũng có danh sách tham chiếu về các cấu trúc dữ liệu có sẵn cho C# và phương pháp của chúng?

+1

Bạn đang tìm kiếm một cấu trúc dựa trên kịch bản dữ liệu (khách hàng, sản phẩm, Book), hoặc cho các cấu trúc dữ liệu rất chung chung (Tree, Danh sách, từ điển)? – Eilon

+0

Hãy xem https://github.com/riyadparvez/data-structures-csharp – user

Trả lời

18

Hầu hết cấu trúc dữ liệu bạn sẽ sử dụng trong C# đều có trong System.Collections.Generic namespace. Có một số cấu trúc dữ liệu hiếm khi được sử dụng trong số System.Collections.Specialized namespace. Ngoài ra, có một số phiên bản cũ hơn, không chung chung của cấu trúc dữ liệu hầu như không còn được dùng nữa kể từ khi giới thiệu các generic trong C# 2.0 có sẵn trong System.Collections namespace.

Scott Mitchell có một bài viết giới thiệu hay về một số cấu trúc dữ liệu trong .NET: An Extensive Examination of Data Structures Using C# 2.0.

Nếu bạn đến từ một nền Java, bạn sẽ nhận thấy rằng không giống như Java, các cấu trúc dữ liệu .NET được đặt tên theo chức năng của chúng chứ không phải cách chúng được triển khai.

0

Giống như Bộ sưu tập Java, C# có một hệ thống phân cấp các giao diện bao gồm các thuật ngữ sưu tập (ICollection), danh sách (IList) và bản đồ (IDictionary). Nó ánh xạ 1: 1 lên java.util.collections, ngoại trừ java.util.Set. Không có thiết lập trong C# ngày hôm nay. ISet được cho là đang trên đường chạy .NET 4.0.

+4

HashSet phù hợp với tôi khá tốt. –

2

Bạn sẽ yêu thích chúng. C# cấu trúc dữ liệu kết hợp với LINQ cung cấp nhiều hơn so với Java. Kiểm tra không gian tên System.Collections.Generic. Một lưu ý quan trọng là hầu hết các bộ sưu tập chung thực hiện các giao diện IEnumerable<T> cách này hay cách khác và bạn có thể LINQ to bất kỳ IEnumerable <T> đối tượng:

List<SomeClass> yourList = new List<SomeClass>(); 
// Add elements ... 
var redElementsOnly = yourList.Where(e => e.IsRed); 

Kiểm tra các lớp System.Linq.Enumerable cho một danh sách đầy đủ về những gì LINQ có thể làm cho bạn.

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