Array와 ArrayList의 차이점

Anonim

Array 및 ArrayList 란 무엇입니까?

Array와 ArrayList는 Java 프로그램에서 자주 사용되는 인덱스 기반 데이터 구조입니다. 개념적으로 말하면, ArrayList는 내부적으로 배열로 뒷받침되지만, 둘 사이의 차이를 이해하는 것이 훌륭한 Java 개발자가되는 열쇠입니다. 먼저 코딩을 시작한 초보자들부터 시작하는 것이 기본 단계입니다. 둘 다 프리미티브 또는 객체가 될 수있는 Java에서 요소를 저장하는 데 사용되지만 기능 및 성능 측면에서 상당한 차이가 있습니다. 두 가지의 주요 차이점은 Array는 정적 인 반면 ArrayList는 본질적으로 동적이라는 것입니다. 이 기사에서는 두 가지를 다양한 측면에서 비교하여 하나를 선택할 수 있도록합니다.

Array와 Arraylist의 차이점

크기 조정 가능

  1. 두 데이터 구조 간의 주요하고 두드러진 차이점 중 하나는 Array가 본질적으로 정적이라는 것입니다. 즉, 고정 길이 데이터 유형을 의미합니다. ArrayList는 본질적으로 동적이므로 가변 길이 데이터 구조를 의미합니다. 기술적 인 측면에서 Array 객체가 만들어지면 Array의 길이를 변경하거나 수정할 수 없습니다. 동일한 데이터 유형의 요소를 순차적으로 수집합니다. Java의 배열은 C / C ++에서 작동하는 것과 다르게 작동합니다. 한편, ArrayList는 자체 크기를 조정할 수 있으며 배열은 필요할 때마다 커질 수 있습니다. 동적 데이터 구조이기 때문에 요소를 목록에 추가하고 제거 할 수 있습니다.

->

Generics
  1. Java에서 인터페이스의 일반 클래스 배열을 생성 할 수 없으므로 배열과 제네릭이 함께 사용되지 않아 배열이 공 변성이라는 하나의 기본 이유 때문에 일반 배열을 만들 수 없습니다 제네릭은 불변합니다. Array는 고정 길이 데이터 구조이지만 특정 클래스의 객체 또는 특정 데이터 유형의 프리미티브를 포함합니다. 따라서 Array 객체를 생성하는 동안 지정된 것과 다른 데이터 유형을 저장하려고하면 단순히 "ArrayStoreException"을 던집니다. 반면에 ArrayList는 유형 안전을 보장하기 위해 Generics를 지원합니다.

- 9 ->

프리미티브
  1. int, double, long 및 char과 같은 기본 데이터 유형은 ArrayList에서 사용할 수 없습니다. 오히려 객체를 보유하고 있으며 원시 객체는 Java에서 객체로 간주되지 않습니다. 반면 배열은 객체를 저장하기위한 자바에서 가장 효율적인 데이터 구조 중 하나이기 때문에 배열은 Java에서 객체뿐만 아니라 프리미티브를 포함 할 수 있습니다. 그것은 같거나 다른 유형 중 하나 일 수있는 오브젝트를 보유하도록 설계된 집계 데이터 유형입니다.

Length

  1. Array의 길이를 가져 오려면 Array에서 작업을 수행 할 길이를 알아야하기 때문에 코드는 length 속성에 액세스해야합니다.ArrayList는 size () 메서드를 사용하여 ArrayList의 크기를 결정하지만 Array의 길이를 결정하는 것과는 다소 다릅니다. size () 메서드 속성은 ArrayList의 요소 수를 결정하며 ArrayList의 요소 수입니다.

예:

public class ArrayLengthTest { public static void main (String [] args) { ArrayList arrList = new ArrayList (); String [] items = { "One", "Two", "Three"};

for (String str: items) {

arrList. add (str);

}

int size = items. 크기();

시스템. 아웃. println (크기);

}

구현

Array는 동적으로 생성되는 Java의 기본 프로그래밍 구성 요소이며 요소를 보유하기 위해 할당 연산자를 사용하는 반면 ArrayList는 add () 속성을 사용하여 요소를 삽입합니다. ArrayList는 지정된 메소드 세트를 사용하여 요소에 액세스하고 수정하는 Java의 콜렉션 프레임 워크에서 하나의 클래스입니다. ArrayList의 크기는 동적으로 늘리거나 줄일 수 있습니다. 배열의 요소는 인접한 메모리 위치에 저장되며 그 크기는 전체적으로 정적으로 유지됩니다.

성능

두 데이터 구조는 ArrayList가 배열에 의해 뒷받침되는 것과 비슷한 종류의 성능을 제공하지만 대부분 CPU 시간 및 메모리 사용면에서 다른 점보다 약간 우위에 있습니다. 예를 들어, 배열의 크기를 알면 ArrayList를 사용할 수 있습니다. 그러나 Array를 반복하는 것은 ArrayList를 반복하는 것보다 약간 빠릅니다. 프로그램에 많은 수의 프리미티브가 포함 된 경우 Array는 ArrayList보다 시간과 메모리 측면에서 훨씬 뛰어납니다. 배열은 컬렉션 구현에 사용할 수있는 저급 프로그래밍 언어입니다. 그러나 성능은 수행중인 작업에 따라 다를 수 있습니다.

배열 대. Arraylist

  1. Array

ArrayList

  1. Array는 배열 객체가 만들어지면 길이를 수정할 수없는 고정 길이 데이터 구조입니다.

ArrayList는 본질적으로 동적입니다. 즉, 필요할 때 커지도록 크기를 조정할 수 있습니다.

배열의 크기는 프로그램 전체에서 정적으로 유지됩니다.

ArrayList의 크기는로드 및 용량에 따라 동적으로 커질 수 있습니다. 할당 연산자를 사용하여 요소를 저장합니다.
add () 속성을 사용하여 요소를 삽입합니다. 그것은 동일하거나 다른 데이터 타입의 객체뿐만 아니라 프리미티브를 포함 할 수있다. Primitives는 ArrayList에 허용되지 않습니다. 객체 유형 만 포함 할 수 있습니다.
배열과 제네릭은 서로 연결되지 않습니다. ArrayList에 제네릭을 사용할 수 있습니다. 배열은 다차원적일 수 있습니다.
ArrayList는 단일 차원입니다. 요소가 인접한 메모리 위치에 저장되는 네이티브 프로그래밍 구성 요소입니다.
객체가 연속 된 위치에 저장되지 않는 Java의 콜렉션 프레임 워크의 클래스입니다. 길이 변수는 배열의 길이를 결정하는 데 사용됩니다.
Size () 메소드는 ArrayList의 크기를 결정하는 데 사용됩니다. 지정된 요소 또는 객체를 저장하기 위해 ArrayList보다 적은 메모리를 사용합니다.
객체를 저장하기 위해 Array보다 많은 메모리를 사용합니다. Array를 반복하는 것이 ArrayList를 반복하는 것보다 빠릅니다.
ArrayList 반복은 성능 측면에서 상당히 느립니다. 요약
배열에서 프로그램을 구현하는 것이 배열이 저수준 데이터 구조라는 간단한 이유 때문에 ArrayLists를 사용하여 동일한 결과를 얻을 수 있다고 생각하는 사람들도 있지만, 다시 수행. 글쎄, ArrayList의 길이는 고정되어 있지만 ArrayList의 크기는 동적으로 늘리거나 줄일 수 있습니다. 따라서 ArrayList는 기능 측면에서 Array에 비해 약간의 가장자리를 갖습니다. 그러나 차이점에도 불구하고 그들은 몇 가지 유사점을 공유합니다. 두 가지 모두 Java의 인덱스 기반 데이터 구조로, 객체를 저장할 수 있고 둘 다 null 값과 중복을 허용합니다. 글쎄, 당신이 미리 객체의 크기를 알고 있다면, 당신은 배열로 가야하고, 당신이 그 크기에 대해 확실하지 않다면 ArrayList로 가라.