Java

[Java] Array / List / ArrayList 차이점

김먼저 2022. 12. 13. 13:03

시니어 분들과 작업하다보니 하나하나

 

더 신경쓰게 되고

 

더 검색하게 되고

 

더 공부가 되네요.(but, 속도↓ 시간투자↑)

 

 

DB에서 데이터를 조회할 때, 동적으로 배열/리스트에 데이터를 받아야 할 때가 있습니다.

 

Java에서 사용할 수 있는 자료구조는 Array / List / ArrayList가 있습니다.

 

그러면 '언제 뭘 써야하고 이유는 무엇일까?'라는 생각이 들어 공부 겸 정리를 해보려고 합니다.

 

 

 

1. Array(배열)

 

장점

  • index는 값에 대한 유일무이한 식별자        → 인덱스를 통한 검색이 용이함.
  • 연속된 메모리의 공간으로 이루어져 있다. 연속적이므로 메모리 관리가 효율적이다.

단점

  • 정적이므로 배열의 크기를 컴파일 이전에 정해주어야 한다.

           → 컴파일 이후 배열의 크기를 변동 할 수 없다. 이로 인해 크기 조절이 제한되고 메모리 낭비가 발생할 수 있음.

 

 

2. List

장점

  • 리스트는 배열이 가지고 있는 인덱스라는 장점을 버리고 대신 빈틈없는 데이터의 적재 라는 장점을 취함.
  • 포인터를 통하여 다음 데이터의 위치를 가르켜고 있어 삽입 삭제의 용이. → 추가/삭제 성능 좋음.
  • 비연속적 메모리 구조 불연속한 메모리에 데이터가 저장되어 메모리 관리가 유연함.

단점

  • 검색 성능이 좋지 않다.
  • 포인터를 통해 다음 데이터를 가르키므로 추가적인 메모리 공간 발생.

 

 

배열과 List에 대해 '간단히' 알아보았는데요,

 

메모리, 검색에 관해서는 상반되는 장단점을 가졌음을 알 수 있습니다.

 

정리하자면,

 

  메모리 할당 데이터 조회 추가/삭제 조회
Array(배열) 정적 빠름. 느림. 빠름.
List(리스트) 동적 느림. 빠름. 느림.

 

 

 

3. Java List Collection - ArrayList (feat.Java)

 

ArrayList는 Array(배열)와 List(리스트)의 장점을 합친 것입니다.

 

  • 사용하기 편한 배열의 index 식별자 사용 가능.
  • 리스트의 특성인 동적 할당 가능.
  • 제네릭 사용이 가능하다.

 

개발을 하다보면 두 가지 특성을 사용해야할 경우가 생기는데

 

그럴 경우 매우 유용하게 사용할 수 있습니다:) (ex) List<DTO>...)

 

끝!!