작심 365

[Java] Array 와 ArrayList 차이 본문

Back-End/Java

[Java] Array 와 ArrayList 차이

eunKyung KIM 2023. 10. 25. 20:54

Array 와 ArrayList 차이

공통점

둘다 하나의 묶음으로 데이터를 저장한다.

 

차이점

Array(배열)의 경우 길이가 지정되면 그 길이를 변경할 수 없다. 만약에 미리 지정한 길이가 부족 한 경우 직접 새로운 배열을 만들어서 

모두 옮겨주어야 한다. 길이가 남는 경우는 공간이 낭비되는 단점이 있다.

 

ArrayList의 경우는 가변 길이이다. 미리 지정한 길이가 부족할 경우 자동으로 크기를 늘려준다. 


Array

배열은 같은 타입의 데이터들을 하나로 묶어서 다루는 것을 말한다. 

 

 

 

배열은 이미 지정된 크기는 변경할수 없기 때문에 지정된 크기보다 많은 양의 데이터를 저장할 경우 에러가 발생한다.

 

 

배열은 변수에 저장된 데이터 묶음들이 들어있는 시작 주소 값이 저장된다.

 


ArrayList

ArrayList는 List 인터페이스를 구현할 클래스로 먼저 List 인터페이스가 무엇인지 알 필요가 있다.

 

List 인터페이스 특징

- 순서가 있는 데이터의 집합.

- 중복값을 허용.

- 구현 클래스로는 ArrayList, LinkedList, Stack, Vector 등이 있다.

 


ArrayList 

 

ArrayList 가 정의된 파일에 가면 elementData 멤버 변수가 선언되어 있는데 타입이 Object 배열이다.

즉 ArrayList 에 저장되는 데이터는 객체인것을 알 수 있고, 객체를 저장할 때는 객체 자체가 아닌 객체가 존재하는 위치의 주소값이 저장된다. 

ArrayList.class

 

 


ArrayList 주요 함수 및 사용법

객체 추가  : boolean add(Object o)

 

원래는 Object 인 Integer 타입으로 저장하는게 맞지만 자동 autoboxing 지원으로 int 타입을 넣어줘도 된다. 

실제 메모리에는 다음과 같이 저장된다.

 

 

 ArrayList의 경우 가변 길이 이므로 생성자로 크기를 지정해 주어도 해당 크기보다 객체를 더 저장해도

에러가 발생하지 않고 내부적으로 용량이 더 큰 배열로 자동 복사해준다. 

(참고로 크기를 지정해 주지 않을경우 기본값이 10 이다.)

 

 

객체 전체 삭제 : void clear()

ArrayList 를 완전히 비운다.

 

 

 

객체 정렬 : Collections.sort()

Collections 라는 Util 클래스를 사용해서 ArrayList에 있는 객체들을 쉽게 정렬해줄 수 있다.

 

특정 위치에 있는 객체 삭제 : Object remove(int index)

특정 객체 삭제 : boolean remove(Obejct o)

특정 객체 확인 : boolean contains(Object o)

특정 위치에 있는 객체 반환 : Object get (int index)

특정 객체가 있는 위치 반환 : Int indexOf(Object o)

ArrayList 가 비었는지 확인 : boolean isEmpty()

 

'Back-End > Java' 카테고리의 다른 글

[Java ] Getter , Setter 를 지양해야 되는 이유  (4) 2023.10.31
Comments