일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준
- 디렉티브
- 현대암호
- java
- OOP
- 프로그래밍
- 객체지향
- 클래스 패스
- 형변환 연산자
- jvm
- LANG
- bubble-sort
- 2884
- 암호론
- class
- BufferedWrite
- 자료구조
- 예외처리
- HTML
- 재귀호출기본
- 알고리즘
- try&catch
- 연결된 예외
- 자동 형변환
- 공개키 암호
- 객체
- JSP
- 소수판정
- lang package
- 백준 알고리즘
- Today
- Total
코드일기장
[Java] List Interface (리스트 인터페이스) 본문
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 인터페이스에 정의된 메서드는 다음과 같다.
메서드 | 설명 |
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
'컴퓨터 과학 > 자료구조' 카테고리의 다른 글
[Java] 자바의 LinkedList (0) | 2022.07.04 |
---|---|
[Java] ArrayList (0) | 2022.03.28 |
[Java] 컬렉션 프레임웍(collections framework), Collection인터페이스 (0) | 2022.03.18 |
배열 요소의 최댓값, 배열 요소 역순, 두 배열의 비교, 기수변환 (0) | 2022.01.15 |
Java로 이용한 버블정렬 (1) | 2021.11.14 |