일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- KPT
- JVM
- diary
- GitHub
- 내일배움캠프
- #스파르타내일배움캠프TIL
- 클래스
- Diary 해우소
- 성장기록
- 스레드
- static
- 해우소
- Git
- 객체지향 언어
- 변수의 다양성
- 포맷은 최후의 보루
- Java의 이점
- #스파르타내일배움캠프
- Token
- 회고록
- #내일배움캠프
- 인스턴스
- 스파르타내일배움캠프TIL
- Github_token
- 감사기록
- Java
- 생성자
- 스파르타내일배움캠프
- TiL_1st_0419
- 메서드
- Today
- Total
몬그로이
ArrayList와 List의 관계? 본문
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이라는 패키지에 속해있다
'Dev 언어 정리 & Self QnA > Java' 카테고리의 다른 글
한 클래스는 한가지 인터페이스만 구현할까? (0) | 2024.04.24 |
---|---|
인터페이스, 클래스, 인스턴스, 메서드 그리고 생성자? (0) | 2024.04.24 |
컴파일러를 두 번이나 거쳐서 얻는 것? (0) | 2024.04.23 |
Java 정수형 변수는 왜 네 가지나 있을까? (0) | 2024.04.22 |
Java는 객체지향 언어다 _객체지향이 뭔데? (0) | 2024.04.22 |