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

Anonim

Array and ArrayList là gì?

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.

  1. Primitive

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ụ

  1. :

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

  1. Array

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.