몬그로이

ArrayList와 List의 관계? 본문

Dev 언어 정리 & Self QnA/Java

ArrayList와 List의 관계?

Mon Groy 2024. 4. 23. 21:00

ArrayList는 List 인터페이스를 구현한 클래스 중 하나다

이 말은, ArrayList는 List에서 정의된 메서드를 모두 포괄하고 있다는 것이다

더보기

LinkedList, Vector 등도 List인터페이스를 구현한 것이다

 

ArrayList는 List에서 사용할 수 있는 모든 메서드를 사용할 수 있되 추가적인 자료구조를 갖는다

이것이 특정 인터페이스를 구현한 클래스들이 갖는 특징이다

더보기

자바에서 인터페이스는 일종의 계약(contract)으로,

해당 인터페이스를 구현하는 클래스는 인터페이스에서 정의된 모든 메서드를 제공해야 한다

인터페이스를 구현함으로써 클래스는 해당 인터페이스에서 정의된 동작을 실제로 구현하고,

해당 동작을 외부에서 호출할 수 있게 된다

 

다양한 프레임워크 중 컬렉션 프레임워크 안에 List라는 인터페이스가 있고

List인터페이스의 메서드를 모두 가진채 개성있는 구조적 특징까지 포함한 것이 ArrayList클래스인 것이다

 

List 인터페이스는 순서가 있는 요소의 컬렉션을 나타내기 때문에

ArrayList 역시 순서가 있는 요소를 가지고 있다

 

List인터페이스는 순회가 가능하고, 중복 요소를 허용하며 인덱스를 통해 요소에 접근할 수 있기 때문에

ArrayList 또한  순회가 가능하고, 중복 요소를 허용하며 인덱스를 통해 요소에 접근할 수 있다

 

그리고 그렇게 접근한 요소를 추가, 제거, 검색하는 등의 작업도 수행할 수 있다

 

이런 기능들을 위해 List 인터페이스에서는 다양한 메서드를 제공하는데

이 또한 List를 구현한 클래스들이라면 모두 사용이 가능하다

 

List는 갖고 있지 않지만 ArrayList가 갖는 기능은

'배열을 기반으로한' 동적인 요소 추가 및 제거 기능이다

ArrayList의 자료구조적 특징이 크기가 동적으로 조절되는 배열이기 때문이다

 

정사각형은 사각형의 특수한 경우이며, 직사각형은 마름모의 특수한 경우이다

이처럼 ArrayList는 List의 특수한 구현 중 하나인 것으로 보면 되겠다

 

더보기

추가적으로

ArrayList는 List를 구현한 것이기 때문에

List가 속해있는 java.util이라는 패키지에 속해있다