1. Trang chủ
  2. » Luận Văn - Báo Cáo

(TIỂU LUẬN) tìm hiểu LIST và ARRAY LIST trong C

17 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm Hiểu List, Arraylist Trong C#
Tác giả Vũ Đình Đăng Khoa-2001222099, Trần Văn Thọ, Dương Tấn Lên-2001222239, Nguyễn Hải Đăng-2001220959, Bùi Tấn Đạt-2001220879, Huỳnh Hoàng Sơn-2001224188
Trường học Trường Đại Học Công Nghiệp Thực Phẩm TP Hồ Chí Minh
Chuyên ngành Công Nghệ Thông Tin
Thể loại Tiểu luận
Năm xuất bản 2023
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 17
Dung lượng 133,37 KB
File đính kèm Nhom07_List,ArrayList trong C#_quan ly sach.rar (3 MB)

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

PHẦN 2: NỘI DUNG 1 Giới thiệu List 1.1 List là gì? List là một danh sách chứa các đối tượng (các nút (node) – lưu trữ các thông tin dữ liệu và địa chỉ của nút kế tiếp, nút trước đó) liên kết với nhau và cho phép chèn thêm hay xóa bất kì một đối tượng nào trong danh sách. Là một cấu trúc dữ liệu cơ bản để biết thêm tham khảo tại danh sách liên kết đơn. 1.2 Ưu và nhược điểm của List Việc sử dụng thành thạo các hàm trong “list” nói chung hoặc danh sách “list” nói riêng sẽ giúp ích rất nhiều về vấn đề quản lý, có thể là quản lý một danh sách thông tin nào đó, với các hàm đã được hỗ trợ viết sẵn sẽ giúp dễ dàng cập nhật và sửa chữa. List hỗ trợ vòng lặp 2 chiều, nhưng lại không thể truy cập ngẫu nhiên như các mảng thông thường vì vậy mà việc tìm kiếm một phần tử trong danh sách sẽ rất chậm, lí do từ việc cấu trúc của List được xây dựng tương tự danh sách liên kết đơn. 1.3 Các thao tác trên List List là một trong những kiểu dữ liệu cơ bản trong C, chứa các phần tử của cùng loại và có thể được thao tác một cách dễ dàng. Dưới đây là một số thao tác phổ biến của List: • Add() – Thêm một phần tử vào cuối List • Insert() – Thêm một phần tử mới vào List ở vị trí bất kỳ • Remove() – Xóa một phần tử khỏi List • RemoveAt() – Xóa phần tử ở vị trí bất kỳ khỏi List • Clear() – Xóa toàn bộ phần tử khỏi List • Contains() – Kiểm tra xem phần tử có tồn tại trong List hay không • IndexOf() – Trả về vị trí đầu tiên của phần tử trong List • Count – Trả về số lượng phần tử trong List • Sort() – Sắp xếp một List theo thứ tự được chỉ định (tăng dần hoặc giảm dần) • Reverse() – Đảo ngược thứ tự các phần tử trong List Với các phương thức này, người lập trình có thể tùy chỉnh List theo yêu cầu của mình và thực hiện các tác vụ liên quan đến dữ liệu một cách dễ dàng.

Trang 1

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THỰC PHẨM TP HỒ CHÍ MINH

KHOA CÔNG NGHỆ THÔNG TIN

TIỂU LUẬN HỌC PHẦN: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

TIỂU LUẬN:

NHÓM 7

Thành Phố Hồ Chí Minh, ngày , tháng , năm 2023

BỘ CÔNG THƯƠNG

Đề Tài 15: TÌM

HIỂU LIST,

ARRAYLIST

TRONG C#

Trang 2

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THỰC PHẨM TP HỒ CHÍ MINH

KHOA CÔNG NGHỆ THÔNG TIN

TIỂU LUẬN:

Thành Phố Hồ Chí Minh, ngày , tháng , năm 2023

Lời Cam Đoan

Em/Chúng em xin cam đoan đề tài tiểu luận TÌM HIỂU LIST, ARRAYLIST TRONG C# do cá nhân/nhóm 7 nghiên cứu và thực hiện.

ĐỀ TÀI 15:

TÌM HIỂU

LIST,

ARRAYLIST

TRONG C#

Nhóm:

Trưởng nhóm: Vũ Đình Đăng Khoa-2001222099

Thành viên:

1 Dương Tấn Lên-2001222239

2 Nguyễn Hải Đăng-2001220959

3 Bùi Tấn Đạt-2001220879

4 Huỳnh Hoàng Sơn-2001224188

Giảng viên hướng dẫn:

Trần Văn Thọ

Trang 3

Em/ chúng em đã kiểm tra dữ liệu theo quy định hiện hành.

Kết quả làm bài của đề TÌM HIỂU LIST, ARRAYLIST TRONG C là

trung thực không sao chép từ bất kì bài tập nào của nhóm khác

Các tài liệu được sử dụng trong tiểu luận có nguồn gốc, xuất xứ rõ ràng

(Ký và ghi rõ họ tên)

MỤC LỤC

PHẦN 1: PHẦN MỞ ĐẦU 5

Trang 4

PHẦN 2: NỘI DUNG 6

1 Giới thiệu List 6

1.1 List là gì? 6

1.2 Ưu và nhược điểm của List 6

1.3 Các thao tác trên List 6

1.4 Cấu tạo của List 7

1.5 Cơ chế hoạt động của List 7

1.6 Khởi tạo List 8

1.7 Thêm và xóa phần tử của List 8

1.8 Tìm kiếm thông tin trong List 9

1.9 Duyệt các phần tử trong List 9

2 Giới thiệu về array list 11

2.1 Array List là gì? 11

2.2 Ưu và nhược điểm của Array List 11

2.3 Các thao tác trên Array List 11

2.4 Cấu tạo của ArrayList 12

2.5 Cơ chế hoạt động của ArrayList 12

2.6 Khởi tạo ArrayList 13

2.7 Thêm và xóa phần tử của ArrayList 14

2.8 Tìm kiếm thông tin trong ArrayList 14

2.9 Duyệt các phần tử trong ArrayList 15

PHẦN 3: KẾT LUẬN CHUNG 16

BIÊN BẢN NHÓM 17

PHẦN 1: PHẦN MỞ ĐẦU

Cùng với sự phát triển của khoa học, kỹ thuật, công nghệ thông tin ở nước ta trong những năm gần đây phát triển mạng thì ngành công nghệ thông tin cũng là

Trang 5

ngành thu hút rất nhiều học sinh cho các trường đại học Khi bắt đầu với ngành công nghệ thông tin chúng ta sẽ được tìm hiểu về ngôn ngữ lập trình rất cơ bản đó

là C,C++,C# và đây cũng là cũng là những học phần mà các sinh viên HUFI được học khi học ngành công nghệ thông tin của trường Đại Học Công Nghiệp Thực Phẩm Học phần cung cấp cho sinh viên những kiến thức cơ bản và chuyên sâu về List và ArrayList

Mục tiêu:

- Tìm hiểu cấu trúc dữ liệu và cách vận hành của List và ArrayList

- Phát huy khả năng tự tìm kiến, đọc tài liệu của sinh viên

- Sinh viên học cách tự khái quát, trừu tượng kiến thức mới dựa trên nền kiến thức cũ

- Biết cách viết một bài tìm hiểu, bài nghiên cứu ở mức đơn giản

- Cải thiện khả năng thuyết trình của sinh viên

- Học cách làm việc nhóm

Trang 6

PHẦN 2: NỘI DUNG

1 Giới thiệu List

1.1 List là gì?

List là một danh sách chứa các đối tượng (các nút (node) – lưu trữ các thông tin dữ liệu và địa chỉ của nút kế tiếp, nút trước đó) liên kết với nhau và cho phép chèn thêm hay xóa bất kì một đối tượng nào trong danh sách Là một cấu trúc dữ liệu cơ bản để biết thêm tham khảo tại danh sách liên kết đơn

1.2 Ưu và nhược điểm của List

Việc sử dụng thành thạo các hàm trong “list” nói chung hoặc danh sách

“list” nói riêng sẽ giúp ích rất nhiều về vấn đề quản lý, có thể là quản lý một danh sách thông tin nào đó, với các hàm đã được hỗ trợ viết sẵn sẽ giúp dễ dàng cập nhật và sửa chữa List hỗ trợ vòng lặp 2 chiều, nhưng lại không thể truy cập ngẫu nhiên như các mảng thông thường vì vậy mà việc tìm kiếm một phần tử trong danh sách sẽ rất chậm, lí do từ việc cấu trúc của List được xây dựng tương tự danh sách liên kết đơn

1.3 Các thao tác trên List

List là một trong những kiểu dữ liệu cơ bản trong C#, chứa các phần tử của cùng loại và có thể được thao tác một cách dễ dàng Dưới đây là một số thao tác phổ biến của List:

 Add() – Thêm một phần tử vào cuối List

 Insert() – Thêm một phần tử mới vào List ở vị trí bất kỳ

 Remove() – Xóa một phần tử khỏi List

 RemoveAt() – Xóa phần tử ở vị trí bất kỳ khỏi List

 Clear() – Xóa toàn bộ phần tử khỏi List

 Contains() – Kiểm tra xem phần tử có tồn tại trong List hay không

 IndexOf() – Trả về vị trí đầu tiên của phần tử trong List

 Count – Trả về số lượng phần tử trong List

 Sort() – Sắp xếp một List theo thứ tự được chỉ định (tăng dần hoặc giảm dần)

 Reverse() – Đảo ngược thứ tự các phần tử trong List

Với các phương thức này, người lập trình có thể tùy chỉnh List theo yêu cầu của mình và thực hiện các tác vụ liên quan đến dữ liệu một cách dễ dàng

Trang 7

1.4 Cấu tạo của List

Trong C#, List là một kiểu dữ liệu được sử dụng để lưu trữ các phần tử có cùng loại dữ liệu List được sử dụng rộng rãi để lưu trữ và quản lý dữ liệu, cho phép thêm, sửa, xóa và tìm kiếm các phần tử trong danh sách

Cấu trúc của List gồm các thành phần sau:

 Dữ liệu: List lưu trữ các phần tử trong danh sách, các phần tử này có thể có cùng hoặc khác kiểu dữ liệu

 Size: List được cấp phát một kích thước nào đó để lưu trữ các phần tử Khi danh sách đầy, các phần tử mới sẽ không thể được thêm vào

 Count: List ghi nhận số phần tử hiện có trong danh sách

 Index: List lưu trữ các phần tử theo thứ tự và cho phép truy xuất các phần tử theo chỉ số

 Capacity: dung lượng của List

 Method: List bao gồm các phương thức để thêm, sửa, xóa và tìm kiếm các phần tử trong danh sách

List trong C# sử dụng dynamic array để lưu trữ và cung cấp một số phương thức để quản lý cái động này Vì vậy, khi List quá tải dung lượng của nó, chương trình sẽ tự động tăng dung lượng List một cách động để có thể lưu thêm dữ liệu

1.5 Cơ chế hoạt động của List

List trong C# là một cấu trúc dữ liệu linh hoạt cho phép lưu trữ một tập hợp các đối tượng có thể được truy cập theo vị trí Cơ chế hoạt động của List được xây dựng dựa trên một mảng động, trong đó các phần tử được lưu trữ liên tiếp nhau trong vùng nhớ máy tính

Khi thêm một phần tử vào List, nếu List đã đầy, một mảng mới được tạo ra

và các phần tử của List được sao chép vào mảng mới này và phần tử mới được thêm vào mảng mới này Các phần tử trong List được lưu trữ theo thứ tự và có thể được truy cập bằng cách sử dụng chỉ số Chỉ số của phần tử đầu tiên trong List là 0

và chỉ số của phần tử cuối cùng là số phần tử trong List trừ 1

Ngoài ra, List cũng cung cấp các phương thức để thêm, xóa, tìm kiếm và truy xuất danh sách các phần tử Các phương thức này được cung cấp để cung cấp tính linh hoạt cho việc thao tác với List, giúp người lập trình dễ dàng truy cập và

sử dụng các phần tử trong List một cách hiệu quả

Trang 8

1.6 Khởi tạo List

Các khởi tạo List bao gồm:

 Khởi tạo trống: List name = new List();

 Khởi tạo với số lượng phần tử cố định: List name = new List(capacity);

 Khởi tạo và thêm các phần tử vào List: List name = new List { item1, item2, };

 Khởi tạo bằng cách sao chép các phần tử từ một collection khác: List name

= new List(collection);

Trong C#, để khởi tạo danh sách (List), bạn có thể sử dụng cú pháp sau:

List danhSach = new List();

Trong đó, T là kiểu phần tử của danh sách được chỉ định trước khi khởi tạo Ví dụ, nếu bạn muốn khởi tạo danh sách các chuỗi, bạn có thể sử dụng:

List danhSach = new List();

Sau khi khởi tạo, bạn có thể thêm các phần tử vào danh sách bằng cách sử dụng phương thức Add(), ví dụ:

danhSach.Add("phần tử 1"); danhSach.Add("phần tử 2"); danhSach.Add("phần tử 3");

Bạn cũng có thể khởi tạo danh sách với các phần tử ban đầu bằng cách chuyền một mảng các phần tử vào phương thức khởi tạo, ví dụ:

string[] mangPhanTu = new string[] { "phần tử 1", "phần tử 2", "phần tử 3" };

List danhSach = new List(mangPhanTu);

1.7 Thêm và xóa phần tử của List

*Cở chế của thao tác thêm phân tử trong List trong ngôn ngữ lập trình C#:

- List là một kiểu dữ liệu tổng quát (generic) có thể chứa các phần tử có cùng kiểu dữ liệu

- List sử dụng một mảng động (dynamic array) để lưu trữ các phần tử của

nó - Khi thêm một phần tử vào List, nếu mảng động còn đủ không gian, phần tử

sẽ được thêm vào vị trí cuối cùng của mảng và kích thước của List tăng lên 1

- Nếu mảng động đã đầy, List sẽ tạo ra một mảng mới có kích thước lớn hơn và sao chép tất cả các phần tử từ mảng cũ sang mảng mới Sau đó, phần tử

Trang 9

mới sẽ được thêm vào vị trí cuối cùng của mảng mới và kích thước của List tăng lên 1

- Thao tác thêm phần tử vào List có độ phức tạp trung bình là O(1), nhưng

có thể lên đến O(n) trong trường hợp phải tạo mảng mới và sao chép các phần tử

*Trong ngôn ngữ lập trình C#, phương thức Remove và RemoveAt của lớp List<T> được sử dụng để xóa phần tử trong List

 Phương thức Remove sẽ xóa phần tử đầu tiên trong List có giá trị bằng với giá trị được chỉ định

 Phương thức RemoveAt sẽ xóa phần tử tại chỉ số được chỉ định

1.8 Tìm kiếm thông tin trong List

-Có nhiều cách để tìm kiếm một phần tử trong List trên C# Bạn có thể sử dụng phương thức Find của lớp List để tìm kiếm một phần tử duy nhất trong danh sách Phương thức Find nhận một đối số là một biểu thức lambda để lọc/tìm kiếm danh sách cho một phần tử duy nhất Nếu bạn cần tìm nhiều hơn một phần tử, bạn

có thể sử dụng phương thức FindAll

Ví dụ:

List<CompareDesignGroup> list = // ;

CompareDesignGroup item = list.Find(c => c.FieldId == "SomeFieldId");

1.9 Duyệt các phần tử trong List

-Có nhiều cách để duyệt qua các phần tử trong List trên C# Một cách phổ biến là sử dụng vòng lặp foreach để duyệt qua từng phần tử trong danh sách

Ví dụ:

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

foreach (int number in numbers) {

Console.WriteLine(number);}

Trong đó number sẽ lần lượt nhận giá trị của từng phần tử trong danh sách numbers và được in ra màn hình

Ngoài ra, bạn cũng có thể sử dụng vòng lặp for để duyệt qua từng phần tử trong danh sách bằng cách sử dụng chỉ số của chúng

Ví dụ:

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

for (int i = 0; i < numbers.Count; i++)

Trang 10

{ Console.WriteLine(numbers[i]);

}

Trong đó numbers[i] sẽ lần lượt nhận giá trị của từng phần tử trong danh sách numbers và được in ra màn hình

2 Giới thiệu về array list

2.1 Array List là gì?

Là một Collections giúp lưu trữ và quản lý một danh sách các đối tượng theo

kiểu mảng (truy cập các phần tử bên trong thông qua chỉ số index).

Trang 11

Rất giống mảng các object nhưng có thể thêm hoặc xoá các phần tử một cách linh hoạt và có thể tự điều chỉnh kích cỡ một cách tự động

2.2 Ưu và nhược điểm của Array List

Ưu điểm:

 Cho phép lưu trữ các phần tử có thể thêm hoặc xóa linh hoạt

 Dễ dàng truy cập vào các phần tử bên trong của ArrayList vì nó dựa trên chỉ số

 ArrayList có khả năng thực hiện nhanh các thao tác cơ bản như thêm, sửa, xóa phần tử

 Nó có khả năng tự động mở rộng kích thước để chứa các phần tử mới

Nhược điểm:

 ArrayList được cấp phát bộ nhớ liên tục và không thể phân mảnh, điều này

có nghĩa là việc thêm xoá các phần tử có thể dẫn đến tình trạng lãng phí bộ nhớ hoặc yêu cầu công sức để di chuyển các phần tử khác

 Tìm kiếm các phần tử trong ArrayList sử dụng phương thức indexOf() có thể rất chậm nếu ArrayList chứa hàng trăm nghìn phần tử hoặc nhiều hơn

 ArrayList chỉ có thể lưu trữ các đối tượng, và không thể lưu trữ các kiểu dữ liệu nguyên thủy như số nguyên, số thực, v.v

2.3 Các thao tác trên Array List

Arraylist là một kiểu dữ liệu trong C#, cho phép lưu trữ một tập hợp các phần tử Các thao tác của ArrayList được gọi là các phương thức, bao gồm:

 Add(): Thêm một phần tử vào cuối danh sách

 Insert(): Thêm một phần tử vào danh sách ở vị trí được chỉ định

 Remove(): Xóa một phần tử khỏi danh sách

 RemoveAt(): Xóa phần tử ở vị trí được chỉ định khỏi danh sách

 Clear(): Xóa tất cả các phần tử khỏi danh sách

 Contains(): Kiểm tra xem một phần tử có tồn tại trong danh sách hay không

 IndexOf(): Trả về vị trí của phần tử đầu tiên có trong danh sách

 Count: Trả về số lượng phần tử hiện có trong danh sách

 Sort: Sắp xếp các phần tử của danh sách theo thứ tự tăng dần hoặc giảm dần

 TrimToSize: Giảm kích thước của danh sách để chỉ còn chứa đúng số phần

tử hiện có

 ToArray: Chuyển đổi danh sách ArrayList sang một mảng

Trang 12

 AddRange: Thêm tất cả các phần tử trong một danh sách được chỉ định vào cuối danh sách

 InsertRange: Thêm tất cả các phần tử trong một danh sách được chỉ định vào

vị trí được chỉ định trong danh sách

 RemoveRange: Xóa tất cả các phần tử trong một khoảng của danh sách được chỉ định

 ToArray: Trả về một mảng đã chuyển đổi từ ArrayList

Các thao tác này giúp cho việc quản lý dữ liệu trong ArrayList trở nên dễ dàng và hiệu quả hơn

2.4 Cấu tạo của ArrayList

ArrayList trong C# là một cấu trúc dữ liệu con trỏ động, tức là được sử dụng

để lưu trữ các đối tượng có thể thay đổi kích thước

ArrayList bao gồm hai thành phần chính:

 Mảng (array): Mảng trong ArrayList có thể được tạo ra bằng cách sử dụng một mảng tĩnh Nếu mảng đầy, ArrayList sẽ tạo một mảng mới với kích thước lớn hơn

 Con trỏ (Pointer): Con trỏ trong ArrayList giữ thông tin về số lượng phần tử trong ArrayList, kích thước của mảng và vị trí của phần tử đầu tiên trong mảng

 Để sử dụng ArrayList trong C#, ta phải khai báo đối tượng ArrayList và thực hiện các hoạt động như thêm phần tử, xoá phần tử, truy xuất phần tử,

2.5 Cơ chế hoạt động của ArrayList

Trong C#, ArrayList là một lớp dữ liệu động được sử dụng để lưu trữ tập hợp các phần tử đối tượng, giống như một mảng động ArrayList được sử dụng để thêm, xóa và truy xuất các phần tử trong danh sách Các phần tử trong danh sách

có thể là bất kỳ loại đối tượng nào, bao gồm các đối tượng được xác định bởi người dùng

ArrayList được lập chỉ mục bằng cách sử dụng số nguyên để truy cập trực tiếp các phần tử trong danh sách Mỗi phần tử trong ArrayList được lưu trữ dưới dạng đối tượng, do đó, đối tượng cần phải được chuyển đổi sang kiểu phù hợp trước khi sử dụng

Cách hoạt động của ArrayList được thực hiện thông qua các phương thức và thuộc tính của nó Các phương thức này bao gồm Add, Insert, Remove, Clear, Sort,

Trang 13

BinarySearch, Contains, Count, và IndexOf Các thuộc tính bao gồm Capacity, Count, và Item

Khi tạo một ArrayList, nó được khởi tạo một mảng động có dung lượng khởi tạo ban đầu, và sau đó cung cấp cho phương thức Add() để thêm phần tử vào danh sách Khi danh sách tràn dung lượng cung cấp, một bản sao của nó sẽ được tạo ra

và dung lượng vùng nhớ được cấp phát cho nó sẽ tăng gấp đôi

Tuy nhiên, sử dụng ArrayList cũng có một số hạn chế Các phần tử trong ArrayList phải được chuyển đổi sang kiểu phù hợp trước khi sử dụng, điều này sẽ gây mất thời gian xử lý và tăng chi phí cho việc thực hiện Hơn nữa, vì ArrayList

là một lớp đối tượng thay vì một kiểu giá trị, do đó, nó có thể chịu ảnh hưởng lớn đến hiệu suất tổng thể của ứng dụng của bạn

Trong C#, bạn cũng có thể sử dụng các lớp dữ liệu khác như List, LinkedList, Stack, và Queue để lưu trữ và quản lý các phần tử trong danh sách Tùy thuộc vào nhu cầu của bạn, bạn có thể chọn lớp dữ liệu phù hợp nhất để sử dụng trong ứng dụng của mình để đạt được hiệu suất tối ưu

2.6 Khởi tạo ArrayList

Trong C#, để khởi tạo một ArrayList, bạn có thể sử dụng cú pháp:

using System.Collections;

ArrayList myArrayList = new ArrayList();

Cách này sẽ khởi tạo một ArrayList rỗng

Bạn cũng có thể khởi tạo một ArrayList có sẵn các phần tử bằng cách truyền vào một mảng các giá trị:

using System.Collections;

ArrayList myArrayList = new ArrayList(new object[] {"hello",

123, true});

Cú pháp này sẽ tạo ra một ArrayList chứa 3 phần tử, lần lượt là chuỗi

"hello", số nguyên 123 và giá trị boolean true

2.7 Thêm và xóa phần tử của ArrayList

-Để thêm một phần tử váo Arraylist trong ngôn ngữ c#, bạn có thể sử dụng phương thức Add() để thêm một đối tượng vào phần cuối của ArrayList hoặc sử

Ngày đăng: 17/10/2023, 14:38

w