So sánh array và arraylist trong c năm 2024

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:

Nội dung

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:

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<T>

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.

Cùng tìm hiểu sự khác biệt và so sánh sự khác biệt của Array và ArrayList ngay trong bài viết dưới đây!

Trong bài viết trước, chúng ta đã tìm hiểu về mảng trong Java, chắn hẳn bạn đã có cái nhìn tổng quan về mảng trong Java. Trong bài viết nay, chúng ta sẽ so sánh Mảng - Array và ArrayList - một trong những nền tảng tập hợp Java. Cả Array và ArrayList đều là cấu trúc dữ liệu trong Java phục vụ cùng một mục đích. Cả hai đều đang được sử dụng để lưu trữ các biến có cùng kiểu dữ liệu và thực hiện các hoạt động trên chúng nhưng chúng có một số khác biệt về triển khai và hiệu suất. Vì vậy, chúng ta hãy cùng tìm hiểu sự khác biệt và so sánh sự khác biệt của Array và ArrayList nhé!

Array trong Java là gì?

Mảng là một cấu trúc dữ liệu có độ dài cố định trong Java để lưu trữ các phần tử của các kiểu dữ liệu tương tự trong các vị trí bộ nhớ liền kề. Chúng ta chỉ định kích thước của mảng trong quá trình tạo mảng.

Cú pháp tạo mảng:

data_type arrayname = new data_type [array_size];

Ví dụ:

int myArray = new int [10];
int myArray = new int [ 10 ] ;

ArrayList trong Java là gì?

ArrayList là một nền tảng tập hợp thu thập độ dài động trong Java và cũng lưu trữ các phần tử của cùng một loại nhưng ở đây chúng ta không cần đề cập tới kích thước trong thời điểm tạo nó như trường hợp trong mảng.

Tạo mảng bằng ArrayList:

ArrayList<data_type> objectName = new ArrayList<data_type>();

Ví dụ:

ArrayList < Integer > myArrayList = new ArrayList < Integer > ();

\>>> Đọc thêm: Đệ quy trong Java - Tìm hiểu về đệ quy cho người mới bắt đầu

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

Việc so sánh Array và ArrayList trong Java sẽ dựa trên một số tham số khiến bạn dễ dàng hiểu được sự khác biệt giữa chúng. Giờ thì cùng xem sự khác biệt của cả hai qua những yếu tố dưới đây:

Về bản chất sự khác biệt giữa Array và ArrayList

Array trong Java có bản chất tĩnh, tức là chúng ta không thể thay đổi độ dài của chúng. Chiều dài của mảng là cố định. Khi chúng ta khai báo độ dài tại thời điểm tạo mảng, chúng ta không thể thay đổi kích thước của chúng.

Mặt khác, ArrayList trong Java có bản chất động, do đó đôi khi chúng ta có thể gọi nó là mảng động hoặc mảng có thể thay đổi. ArrayList có thể tự động tăng kích thước nếu chúng ta thêm nhiều giới hạn vượt quá khả năng xác định của nó, do đó nó có bản chất động.

Về thực thi Array và ArrayList

Một mảng là một đặc trưng cơ bản của Java, trong khi ArrayList là một phần của nền tảng tập hợp API trong Java. ArrayList trong Java được thực thi nội bộ bằng cách sử dụng Array. ArrayList là một lớp mang tất cả các thuộc tính của một lớp bình thường, chúng ta có thể tạo các đối tượng từ nó và gọi các phương thức với đối tượng. Mặc dù Mảng là một đối tượng trong Java nhưng không có phương thức nào mà chúng ta có thể gọi bằng đối tượng này. Một mảng chỉ có một thuộc tính duy nhất được gọi là độ dài length và cũng là một hằng số.

\>>> Đọc thêm: Lớp trừu tượng trong Java - Nắm vững khái niệm về Abstract trong Java

Về hiệu suất Array và ArrayList

Vì ArrayList hoạt động nội bộ dựa trên mảng, có thể bạn sẽ nghĩ rằng hiệu suất của chúng tương đương nhau. Về cơ bản, việc này có thể được xem là đúng nhưng hiệu suất của ArrayList có thể chậm hơn khi so sánh với Arrays vì nó có thêm một số tính năng so với Array. Hiệu suất của ArrayList ảnh hưởng chủ yếu xét về thời gian chạy của CPU và cách sử dụng bộ nhớ.

Bất kỳ hoạt động resize () nào trên ArrayList có thể làm giảm hiệu suất của ArrayList vì nó liên quan đến việc tạo mảng mới và sau đó sao chép nội dung từ mảng cũ sang mảng mới. Do đó, thao tác này làm chậm hiệu suất của ArrayList.

Về tính linh hoạt Array và ArrayList

Tính linh hoạt là yếu tố quan trọng nhất tạo nên sự khác biệt đáng kể giữa Array và ArrayList trong Java. ArrayList linh hoạt hơn so với Arrays trong Java. Điều này là do ArrayList có bản chất động. ArrayList có thể tự động phát triển khi các phần tử được thêm vào vượt quá khả năng của nó, điều này không thể xảy ra với Array. Hơn nữa, ArrayList còn cho phép chúng ta loại bỏ các phần tử khỏi nó trong khi điều đó là không thể với Array. Chúng ta không thể xóa các phần tử khỏi một mảng sau khi thêm chúng.

Ví dụ:

Integer intObject[] = new Integer[3];
intObject[0] = new Integer(8); //new object is added to the array object

Loại dữ liệu được lưu trữ

Array có thể chứa cả kiểu dữ liệu nguyên thủy hoạc các đối tượng của một lớp dưới dạng các phần tử của mảng. Nhưng Arraylist chỉ có thể chứa các đối tượng của một lớp. Nó không thể có các kiểu dữ liệu nguyên thủy làm phần tử của nó. Bất cứ khi nào chúng ta truyền một số nguyên vào phương thức add của ArrayList, nó sẽ chuyển đối số đó thành đối tượng nguyên của lớp Wrapper.

\>>> Tham khảo: Khóa học lập trình Java

Kết luận: Trên đây là một số so sánh về sự khác biệt giữa Array và ArrayList. Để sử dụng ArrayList, chúng ta cần nhập gói java.until.ArrayList, trong khi để sử dụng Array, bạn không cần nhập bất kỳ gói nào trong lớp của mình. ArrayList linh hoạt hơn mảng vì nó có nhiều chức năng có sẵn nhưng đồng thời nó có hiệu suất hoạt động kém hơn mảng. Hy vọng qua bài viết này bạn đã hiểu rõ hơn về Array và ArrayList. Tìm hiểu thêm về Java và các ngôn ngữ lập trình khác qua các khóa học lập trình trong Java.