Sự khác nhau giữa Array và ArrayList trong C#



Sự khác biệt giữa Array và List trong C#

Trong bài này, csharpcanban.com sẽ giúp các bạn nhận ra được sự khác biệt giữa Array và List. Mặc dù 2 kiểu Array và List đều có chức năng lưu trữ nhiều phần tử dưới cùng một tên, và cùng một loại, tuy nhiên giữa chúng có những sự khác biệt tương đối lớn, những sự khác biệt đó sẽ được csharpcanban.com liệt kê như dưới đây:

1, Array rất khó tùy biến, như thêm, xóa, xắp xếp các phần tử trong Mảng, ví dụ List có thể làm những điều sau:

List colors = new List[]; colors.Add["Red"]; colors.Add["Blue"]; colors.Add["Green"];

Sau khi khai báo List colors, ta có thể thực hiện chèn, xóa, và xắp xếp List, để chèn một phần tử mới vào List tại vị trí có Index = 1, ta làm như sau

colors.Insert[1, "violet"];

Bạn cũng có thể gọi phương thức sort[] để xắp xếp lại List

colors.Sort[];

Hay là có thể gọi phương thức Remove[] để xóa phần tử khỏi List

colors.Remove["violet"];

Để xóa List thực hiện như sau:

Xem thêm  [C#] Hướng dẫn đóng tất cả cửa sổ con trên ứng dụng MDI

color.Clear [];

2, Array cần phải khai báo số lượng cụ thể phần tử, ví dụ string[] = new string[10], còn List thì không cần. Để khai báo List chỉ cần làm như sau:

List colors = new List[]; colors.Add["Red"]; colors.Add["Blue"]; colors.Add["Green"];

Cấu trúc câu lệnh List như sau

List

Trong đó tham số T là kiểu chung của các phần tử trong List, ví dụ: Int, String, … hay là một Đối tượng nào đó.

3, Một số điểm giống nhau giữa Array và List:

Dùng vòng lặp để truy cập tới các phần tử của List hoặc Array

foreach [string color in colors] { MessageBox.Show[color]; }

Hoặc dùng vòng lặp for

for [int i = 0; i < colors.Count; i++] { MessageBox.Show[colors[i]]; }

Để kiểm tra sự tồn tại của một phần tử trong List ta thực hiện như sau:

if [colors.Contains["Blue"]] { MessageBox.Show["Có màu Blue trong List"]; }

4, Đối với việc cấp phát bộ nhớ, thì Array có ưu điểm hơn so với List, Array tiết kiệm bộ nhớ hơn là List, còn List chiếm nhiều bộ nhớ hơn Array.

5, Khi nào dùng Array khi nào dùng List:

Khi chúng ta đã biết cụ thể số lượng phần tử thì nên dùng Array, còn khi chưa biết cụ thể số lượng phần tử hoặc khi cần thực hiện các thao tác thêm, xóa phần tử thì nên dùng List.

6, Chuyển đổi List thành Array thực hiện như sau:

string[] arr = colors.ToArray[];

7, Chuyển đối List thành chuỗi String thực hiện như sau:

string combindedString = string.Join[",", colors];

Kết quả sẽ trả về một chuỗi ký tự:

"Red,Blue,Green"

Hãy thực hành sử dụng List để cảm nhận sự khác biệt giữa List và Array nhé các bạn.

Xem thêm  [C#] Hướng dẫn sử dụng PictureBox Control

Chúc các bạn thành công !!!


Table Of Contents:

  • Một ArrayList là gì
  • Sự khác biệt giữa Array và ArrayList

Đầu ra: -
10 20 30 40 50

Một ArrayList là gì

ArrayList là một tập hợp các đối tượng có cùng loại hoặc khác nhau. Kích thước của một ArrayList có thể được tăng hoặc giảm động theo yêu cầu. Nó hoạt động giống như một mảng nhưng không giống như mảng trong các mục ArrayList có thể được phân bổ hoặc phân bổ động, tức là bạn có thể thêm, xóa, lập chỉ mục hoặc tìm kiếm dữ liệu trong bộ sưu tập.

Ví dụ về ArrayList trong C-Sharp

Đầu ra: -
123 abc 67 pqr 45

Sự khác biệt giữa Array và ArrayList

  1. Mảng lưu trữ dữ liệu cùng loại trong khi ArrayList lưu trữ dữ liệu ở dạng đối tượng có thể thuộc các loại khác nhau.
  2. Kích thước của một ArrayList tăng trưởng linh hoạt trong khi kích thước Array vẫn tĩnh trong suốt chương trình.
  3. Thao tác chèn và xóa trong ArrayList chậm hơn Mảng.
  4. Mảng được gõ mạnh trong khi ArrayLists không được gõ mạnh.
  5. Mảng thuộc về không gian tên System.Array trong khi ArrayList thuộc về không gian tên System.Collections.
  6. Khi chọn giữa Array và ArrayList, hãy quyết định dựa trên các tính năng của chúng mà bạn muốn triển khai.

Sự khác biệt giữa ngân sách vốn và ngân sách doanh thu | Ngân sách vốn và ngân sách doanh thu

Sự khác biệt giữa ngân sách vốn và ngân sách doanh thu là gì? Các ngân sách vốn khác nhau được chuẩn bị cho từng dự án đầu tư. Ngân sách doanh thu là một chính ...

Sự khác biệt giữa Danh sách liên kết đơn lẻ và Danh sách liên kết đôi

Danh sách liên kết đơn hoặc đôi một cấu trúc dữ liệu tuyến tính được sử dụng để lưu trữ một bộ sưu tập dữ liệu. Một danh sách được liên kết phân bổ bộ nhớ

Sự khác nhau giữa Danh sách mảng và Danh sách liên kết Khác biệt giữa

Dữ liệu được Lưu trữ như thế nào? Danh sách mảng và Danh sách liên kết là thuật ngữ phổ biến khi nói đến lưu trữ và truy xuất dữ liệu. Mặc dù có rất nhiều thiết bị lưu trữ, cuối cùng, chúng phụ thuộc vào cơ chế lưu trữ ...

Cả Array và ArrayList đều là các cấu trúc dữ liệu dựa trên chỉ số thường được sử dụng trong các chương trình Java. Về mặt khái niệm, ArrayList được hỗ trợ bởi mảng, tuy nhiên, sự hiểu biết sự khác biệt giữa hai là chìa khóa để trở thành một nhà phát triển Java tuyệt vời. Đây là một bước cơ bản để bắt đầu, đặc biệt là những người mới bắt đầu mới bắt đầu viết mã. Mặc dù cả hai đều được sử dụng để lưu trữ các phần tử trong Java, có thể là nguyên thủy hoặc vật thể, nhưng chúng có phần chia sẻ hợp lý về các tính năng và hiệu suất. Sự khác biệt lớn giữa hai là Array là tĩnh trong khi ArrayList có tính năng động. Bài viết này so sánh hai khía cạnh khác nhau để bạn có thể chọn một trong những khác.

Sự khác biệt giữa Array và Arraylist

Resizable

  1. Một trong những sự khác biệt quan trọng và đáng chú ý giữa hai cấu trúc dữ liệu là Array có tính chất tĩnh trong đó có nghĩa là kiểu dữ liệu chiều dài cố định trong khi ArrayList có tính năng động trong tự nhiên có nghĩa là cấu trúc dữ liệu có độ dài thay đổi. Về mặt kỹ thuật, chiều dài của mảng không thể thay đổi hoặc sửa đổi khi đối tượng Array được tạo ra. Nó chứa bộ sưu tập tuần tự của các phần tử cùng kiểu dữ liệu. Mảng trong Java hoạt động khác với chức năng trong C / C ++. ArrayList, mặt khác, có thể thay đổi kích cỡ của chính nó và các mảng có thể phát triển khi họ cần. Vì nó là một cấu trúc dữ liệu động, nên các phần tử có thể được thêm vào và gỡ bỏ khỏi danh sách.

Bạn không thể tạo ra các mảng của các lớp Giao diện Generic trong Java vì vậy mảng và các Generics không đi đôi với nhau làm cho nó không thể tạo ra Generic Array cho một lý do cơ bản mà các mảng là hiệp biến biến đổi trong khi generics là bất biến. Trong khi Array là một cấu trúc dữ liệu có độ dài cố định, nó chứa các đối tượng cùng lớp hoặc các kiểu nguyên thủy của kiểu dữ liệu cụ thể. Vì vậy, nếu bạn cố gắng lưu trữ các kiểu dữ liệu khác với loại dữ liệu khác được chỉ định trong khi tạo đối tượng Array, nó chỉ đơn giản là ném "ArrayStoreException". ArrayList, mặt khác, không hỗ trợ Generics để đảm bảo loại an toàn.

Các kiểu dữ liệu nguyên thủy như int, double, long và char không được phép trong ArrayList. Nó khá giữ các đối tượng và nguyên thủy không được coi là đối tượng trong Java. Mặt khác, các mảng có thể giữ nguyên thủy cũng như các đối tượng trong Java vì nó là một trong những cấu trúc dữ liệu hiệu quả nhất trong Java để lưu trữ các đối tượng. Đó là một kiểu dữ liệu tổng hợp được thiết kế để chứa các đối tượng có thể có cùng loại hoặc loại khác nhau.

Chiều dài
  1. Để có được chiều dài của mảng, mã cần truy cập thuộc tính length vì bạn phải biết độ dài để thực hiện các thao tác trên Array.Trong khi ArrayList sử dụng phương thức size [] để xác định kích thước của ArrayList, nó khá khác với việc xác định chiều dài của Array. Thuộc tính method size [] xác định số lượng các phần tử trong ArrayList, do đó là dung lượng của ArrayList.

Ví dụ

public class ArrayLengthTest {

public static void main [String [] args] { ArrayList arrList = new ArrayList [];

Chuỗi [] mục = {"Một", "Hai", "Ba"};

cho [String str: items] {

arrList. thêm [str];

}

int size = mục. kích thước[];

Hệ thống. ngoài. println [kích cỡ];

}

}

Triển khai

Array là một thành phần lập trình Java được tạo tự động và sử dụng toán tử gán để chứa các phần tử, trong khi ArrayList sử dụng thuộc tính add [] để chèn các phần tử. ArrayList là một lớp từ khung bộ sưu tập trong Java sử dụng một tập hợp các phương pháp xác định để truy cập và sửa đổi các phần tử. Kích thước của một ArrayList có thể tăng hoặc giảm tự động. Các phần tử trong một mảng được lưu trữ trong vị trí bộ nhớ liên tục và kích thước của nó vẫn tĩnh trong suốt.

Hiệu suất

  1. Mặc dù cả cấu trúc dữ liệu cung cấp hiệu suất tương tự như ArraySlug được hỗ trợ bởi mảng, nhưng có một chút cạnh hơn so với thời gian CPU và sử dụng bộ nhớ. Hãy nói, nếu bạn biết kích thước của mảng, bạn có thể đi với ArrayList. Tuy nhiên, iterating trên Array là một chút nhanh hơn iterating trên một ArrayList. Nếu chương trình liên quan đến một số lượng lớn các primitive, một mảng sẽ thực hiện tốt hơn đáng kể so với ArrayList, về mặt thời gian và bộ nhớ. Mảng là một ngôn ngữ lập trình cấp thấp có thể được sử dụng trong triển khai bộ sưu tập. Tuy nhiên, hiệu suất có thể khác nhau tùy thuộc vào hoạt động mà bạn đang thực hiện.

Array Vs. Arraylist

ArrayList

Array là một cấu trúc dữ liệu chiều dài cố định có chiều dài không thể được sửa đổi khi đối tượng mảng được tạo ra.

ArrayList có tính năng động, có nghĩa là nó có thể thay đổi kích thước của chính nó để phát triển khi cần thiết. Kích thước của một mảng vẫn còn tĩnh trong suốt chương trình.
Kích thước của một ArrayList có thể phát triển tự động tùy thuộc vào tải và dung lượng. Nó sử dụng toán tử gán để lưu trữ các phần tử.
Nó sử dụng thuộc tính add [] để chèn các phần tử. Nó có thể chứa các kiểu nguyên thủy cũng như các đối tượng có cùng kiểu hoặc kiểu dữ liệu khác nhau.
Các nguyên thủy không được phép trong ArrayList. Nó chỉ có thể chứa các loại đối tượng. Mảng và Generics không đi đôi với nhau.
Generics được cho phép trong ArrayList. Mảng có thể được đa chiều.
ArrayList là một chiều. Đây là một thành phần lập trình gốc, nơi các phần tử được lưu trữ trong các vị trí nhớ tiếp giáp.
Đó là một lớp từ khung bộ sưu tập Java, nơi mà các đối tượng không bao giờ được lưu trữ ở các địa điểm tiếp giáp. Chiều dài biến được sử dụng để xác định chiều dài của mảng.
Phương thức Size [] được sử dụng để xác định kích thước của ArrayList. Có ít bộ nhớ hơn ArrayList để lưu trữ các phần tử hoặc đối tượng được chỉ định.
Có nhiều bộ nhớ hơn Array để lưu trữ các đối tượng. Iterating trên một mảng là nhanh hơn iterating trên một ArrayList.
Iterating trên một ArrayList là chậm lại đáng kể về hiệu suất. Tóm tắt
Mặc dù một số người nghĩ rằng việc triển khai các mảng trong một chương trình có thể nhận được kết quả nhanh hơn so với thực hiện cùng với ArrayLists vì lý do đơn giản là các mảng là cấu trúc dữ liệu cấp thấp, hiệu suất có thể khác nhau tùy thuộc vào hoạt động của bạn, thực hiện lại. Vâng, chiều dài của một mảng là cố định, trong khi kích thước của ArrayList có thể được tăng hoặc giảm tự động, do đó, ArrayList có một chút cạnh trên Array về chức năng. Tuy nhiên, mặc dù có sự khác biệt, họ cũng chia sẻ một số điểm tương đồng. Cả hai đều là cấu trúc dữ liệu dựa trên chỉ số trong Java cho phép bạn lưu trữ các đối tượng và cả hai đều cho phép các giá trị null cũng như các bản sao. Vâng, nếu bạn biết kích thước của các đối tượng trước, bạn nên đi với một mảng, và nếu bạn không chắc chắn về kích thước, đi với ArrayList.

Video liên quan

Chủ Đề