본문 바로가기
Programming/JAVA

[JAVA] List와 ArrayList차이(Generic)

by 안녕주 2023. 9. 5.

프로그래머스 Lv.1 같은 숫자는 싫어 문제를 풀다가 ArrayList관련된 것을 더 알았는데, List랑 ArrayList의 차이점이 궁금해 알아보게 되었습니다.

 

 

List와 ArrayList

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

List의 클래스들 중에는 ArrayList, LinkedList, Vector, Stack이 있다. 데이터의 용도에 따라 빠른 탐색을 위해 ArrayList를 사용할 때도 있고, 빠른 삽입과 삭제를 위해 LikedList를 사용해야 하는 경우도 있다.

https://www.geeksforgeeks.org/difference-between-list-and-arraylist-in-java/

List는 ArrayList와 LinkedList의 인터페이스이기 때문에 아래와 같이 구현을 하면 다형성의 효과로 List로 클래스를 생성하면 여러 구현 클래스들로도 사용이 가능하다. 

List<Object> list = new ArrayList<Object>();

1. 객체지향 프로그래밍의 일환으로 다형성을 지원하기 때문

2. 처음부터 변경에 유연한 구조로 미리 설계하는 방식

 

 

만약 아래와 같이 구현한다면 나중에 데이터의 용도가 바뀌어 삽입/삭제에 용이한 LinkedList로 변경해야할때 변경이 불가능하고 LinkedList에서 지원하는 메소드를 ArrayList는 사용하지 못한다.

ArrayList<Object> list = new ArrayList<Object>();

 

 

따라서 객체는 인터페이스를 사용해 선언하는 것이 좋다고 한다.

 


Generic(제너릭)

Generic은 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것을 의미한다.

한마디로 특정 타입을 미리 지정해주는 것이 아닌 필요에 의해 지정할 수 있도록 하는 일반(Generic) 타입이다.

 

즉, 인스턴스의 형 변환을 통해 내부 디테일과 메모리 함축에서 이점과 성능을 개선시킬 수 있다.

 

 

 

참고

[JAVA] List 와 ArrayList 차이 (tistory.com)

[Java] ArrayList와 List의 차이 — 으 하기싫어 (tistory.com)

[Java] List 리스트 = ArrayList 로 선언해 사용하는 이유 (tistory.com)

JAVA) List 와 ArrayList 차이 :: 알면 쓸모있는 개발 지식 (tistory.com)

[Java] Java Generic(제네릭) :: wonseok.log (tistory.com)

 

 

댓글