List 는 인터페이스

ArrayList 는 클래스 (List 인터페이스를 상속받아 만들어진 >> List 의 기능 모두 사용 가능)

 

 

List 는 Collection 의 하위 인터페이스

중복된 값을 저장할 수 있는 순서가 지정된 개체 모음

 

List 인터페이스는 ArrayList, LinkedList, Vector, Stack 클래스로 구현 가능

다양한 클래스를 구현하여 List 의 인스턴스 생성, 활용 가능

 

 

ArrayList 는 java.util 패키지에 포함된 Collection 프레임워크의 일부

동적인 배열 제공하는 클래스

int, char 등의 기본 데이터타입을 활용하기 위해선 wrapper 클래스 사용 (Integer, Char)

 

 

 

List ArrayList
인터페이스 클래스
인스턴스화 불가능 (인터페이스이기 때문에) 인스턴스화 가능
Collection framework 의 확장 AbstractList 클래스 확장, List 인터페이스 구현
List 인터페이스는 Index 와 연결된 요소 List 를 생성 객체를 포함하는 동적 배열을 만드는데 사용
시퀀스로 저장되는 요소 컬렉션 생성, Index 사용하여 식별 및 접근 배역이 동적으로 커질 수 있는 객체배열 

 

ArrayList list = new ArrayList<>();

위와 같이 ArrayList 인스턴스를 생성하면, 나중에 데이터의 용도가 바뀌어 삽입/삭제가 유리한 LinkedList 구조로 변경해야 할 때, ArrayList 로 선언된 모든 부분을 LinkedList 로 수정해야 함

 

또한 ArrayList 에서는 지원하지만, LinkedList 에선 지원하지 않는 메서드는 더이상 사용하지 못함

이는 코드 유지/보수에 있어 유연하지 못한 구조

 

 

List list = new ArrayList<>();

위와 같이 사용한다면, 같은 상황에서 new ArrayList 인스턴스 생성 부분만 수정하고, 다른 부분에 대한 변경 필요 X

이게 바로 업캐스팅 하여 사용하는 이유

 

추가적으로

대부분의 경우 ArrayList 만 제공하는 메서드는 사용을 지양한다

>> 다른 List 로 바꿔야 할 경우 수정이 힘들기 때문에

List 로 선언해야 List 에서 제공하는 메서드까지 사용이 가능하기 때문에

 

 

'끄적 > ?' 카테고리의 다른 글

업캐스팅 다운캐스팅  (0) 2023.08.27
Generic  (0) 2023.08.27
String, StringBuffer, StringBuilder  (0) 2023.08.27
Java 메모리 구조, JVM 동작 방식  (0) 2023.08.27
추상클래스 인터페이스  (0) 2023.03.12

+ Recent posts