코드일기장

[Java] List Interface (리스트 인터페이스) 본문

컴퓨터 과학/자료구조

[Java] List Interface (리스트 인터페이스)

won_hyeok2 2022. 3. 18. 21:11

 

  ListInterface(리스트 인터페이스)는 대표적인 선형 자료구조로 순서가 있고 중복을 허용한다.

 

  List는 우리가 흔히 사용하는 배열과 매우 유사하다. 배열을 쓸 때 배열의 길이를 10으로 선언하고 10 이상의 인덱스에 값을 넣으면 IndexOutofBoundsException이 발생한다. 

  이런 단점을 보완하여 List를 통해 '동적 크기'를 갖는다. 마치 배열처럼 사용할 수 있다.

 

  배열과 List 인터페이스의 공통점과 차이점은 무엇일까?

 


 

[공통점]

1. 동일한 특성의 데이터를 묶는다.

2. 반복문내에 변수를 이용하여 하나의 묶음 데이터들을 접근할 수 있다.

 

[차이점-배열]

1. 처음 선언한 배열의 크기(길이)는 변경할 수 없다. 이것을 정적 할당(static allocation)이라고 한다.

2. 메모리에 연속적으로 나열되어 할당.

3. 만약 어떤 index의 값(value)을 삭제해도 그 index는 계속 빈 공간으로 남는다.

 

[차이점 - 리스트]

1. 만약 어떤 index의 값(value)을 삭제하면 빈 공간을 허용하지 않는 리스트 특성상 다시 빈 공간을 채운다.

2. 리스트의 길이를 계속해서 추가 삭제하기 용이하다. 동적 할당(dynamic allocation).

3. 데이터들이 연속적으로 나열된다.

 

 

 


Array(배열)의 장단점

장점

  • 인덱스를 통한 검색이 쉽고 빠르다.
  • 메모리 관리가 편하다.

단점

  • 크기가 고정되어 있기 때문에 삭제된 상태를 빈 공간으로 남겨두어 메모리가 낭비된다.(static allocation)
  • 컴파일 이후 배열의 크기를 변동할 수 없다.
  • 정적이므로 배열의 크기를 컴파일 전에 잘 정해줘야 한다.

 

 

List의 장단점

장점

  • 포인터를 통하여 데이터를 삽입 추가 삭제에 용이하다.
  • 동적이므로(dynamic allocation)이라 크기가 계속해서 늘리거나 줄일 수 있다.
  • 메모리의 재사용 편리
  • 메모리 관리 편리

 

단점

  • 검색에 있어서 성능이 Array보다 떨어진다.

 

  추가/삭제 검색
Array 느림 빠름
List 빠름 느림

 

 

 

List 상속계층도

 

 

 

List 인터페이스에 정의된 메서드는 다음과 같다.

 

메서드 설명
void add (int index, Object element)
boolean addAll (int index, Collection c)
지정된 위치(index)에 객체(element) 또는 컬렉션에 포함된 객체들을 추가한다.
Object get (int index) 지정된 위치(index)에 있는 객체를 반환한다.
int indexOf (Object o) 지정된 객체의 위치(index)를 반환한다.
(List의 첫 번째 요소부터 순방향으로 찾는다.)
int lastIndexOf (Object o) 지정된 객체의 위치(index)를 반환한다.
(List의 마지막 요소부터 역방향으로 찾는다.)
Listlterator listlterator()
Listlterator listlterator (int index)
List의 객체에 접근할 수 있는 Listlterator를 반환한다.
Object remove (int index) 지정된 위치 (index)에 있는 객체를 삭제하고 삭제된 객체를 반환한다.
Object set (int index, Object element) 지정된 위치(index)에 객체(element)를 저장한다.
void sort (Comparator c) 지정된 비교자(comparator)로 List를 정렬한다.
List subList (int fromIndex, int toIndex) 지정된 범위 (fromIndex부터 toIndex)에 있는 객체를 반환한다.

 

 

 


 

 

 

List 공부할 때 참고하기 좋은 글

https://velog.io/@adam2/Array%EC%99%80-List%EA%B7%B8%EB%A6%AC%EA%B3%A0-Java-List

 

[자료구조]Array와 List(그리고 Java List)

Array와 List 그리고 자바의 Collection

velog.io

https://st-lab.tistory.com/146

 

자바 [JAVA] - List Interface (리스트 인터페이스)

자료구조 관련 목록 링크 펼치기 더보기  0. 자바 컬렉션 프레임워크 (Java Collections Framework)  1. 리스트 인터페이스 (List Interface) - [현재 페이지]  2. 어레이리스트 (ArrayList)  3. 단일 연결리..

st-lab.tistory.com

 

 

대표사진

<a href="https://www.flaticon.com/kr/free-icons/" title=" 아이콘"> 아이콘  제작자: Freepik - Flaticon</a>

https://www.flaticon.com/kr/free-icon/java_152760?term=%EC%9E%90%EB%B0%94&related_id=152760 

 

 

 

Comments