앞서서 살펴본 컬렉션 프레임워크의 기본 개념을 바탕으로, 하나씩 세부 사용법을 살펴보도록 하겠습니다. 우선 List 컬렉션에 대해서 먼저 살펴보겠습니다.
○ List 컬렉션의 특성
List 컬렉션은 기본적으로 객체를 일렬로 늘어 놓고, 인덱스로 관리하는 구조입니다. 객체 자체의 데이터를 저장하는 것은 아니며, 흔히 아는 참조 타입과 마찬가지로 특정 객체의 메모리 주소 번지를 참조하는 구조입니다. 그렇기 때문에 만일 '동일한 객체'를 다른 인덱스에서 참조하게 되면, 역시 동일한 메모리를 참조하게 됩니다. null도 저장이 가능합니다. 다만, 이 경우에는 해당 인덱스는 객체 자체를 아예 참조를 하지 않는 방식으로 null을 저장합니다.
List는 인덱스를 사용하기 때문에 관련 메서드에서 인덱스를 사용하는 것이 많습니다. 또한, 객체를 저장하면 인덱스 넘버는 상황에 따라 자동으로 부여가 되고, 이 인덱스를 통해서 참조 객체를 검색 또는 삭제하기도 합니다.
아래의 List 인터페이스 메서드는 List 컬렉션에서 공통적으로 사용 가능한 것들입니다. 참고로 List 컬렉션에는 세부적으로 ArrayList, Vector, Linked List 등이 있습니다(각각에 대해서는 세부적으로 살펴보겠습니다)
기능 분류 | 메서드 | Description |
객체 추가 | boolean add(E e) | 주어진 객체를 맨 끝에 추가한다. |
void add(int index, E element) | 주어진 인덱스에 해당 객체를 추가한다. | |
set(int index, E element) | 주어진 인덱스에 저장된 객체를 주어진 객체로 바꾼다. | |
객체 검색 | boolean contains(Object o) | 주어진 객체가 저장되어 있는지 여부를 확인한다. |
E get(int index) | 주어진 인덱스에 저장된 객체를 리턴한다. | |
boolean isEmpty( ) | 컬렉션이 비어있는지를 조사한다. | |
int size( ) | 저장되어 있는 전체 객체의 수를 리턴한다. | |
객체 삭제 | void clear( ) | 저장된 모든 객체를 삭제한다. |
E remove(int index) | 주어진 인덱스에 저장된 객체를 삭제한다. | |
boolean remove(Object o) | 주어진 객체를 삭제 |
여기서 E라는 타입 파라미터가 나옵니다. 구체적인 타입은 해당 인터페이스 메서드의 구현 객체를 생성할 때 결정하게 되는데요, List 인터페이스 자체가 제네릭 타입이기 때문에 그렇습니다.
메서드가 다소 많이 나와서 감이 잡히지 않는 듯 하네요. 기본적인 사용법 먼저 확인해 보겠습니다. 기본적으로 객체 추가는 add( )를 사용합니다. 객체 검색 후 리턴은 get( ), 삭제는 remove( )를 사용합니다. 아래의 예시를 보겠습니다.
List<String> list = ... ;
// 객체 추가
list.add("SWINGS");
list.add(1, "Black Nut");
// 객체 찾기
String str = list.get(1);
// 객체 삭제
list.remove(0);
list.remove("Black Nut");
여기서 전체 객체를 대상으로, 반복해서 get을 해야하는 경우에는 for문을 사용합니다.
List<String> list = ... ;
for(int i = 0; i < list.size() ; i++) {
String str = list.get(i);
}
// 인덱스 번호가 필요 없을 경우 향상된 for문 사용
for(String str : list) {
}
'Programming > JAVA' 카테고리의 다른 글
컬렉션 프레임워크(2) - List 컬렉션 3 : Linked List (1) | 2023.10.30 |
---|---|
컬렉션 프레임워크(2) - List 컬렉션 2 : ArrayList (1) | 2023.10.26 |
컬렉션 프레임워크(1) - 컬렉션 프레임워크 개념 (0) | 2023.09.22 |
람다식(5) - 메서드 참조 4 : 생성자 참조 (0) | 2023.09.19 |
람다식(5) - 메서드 참조 3 : 파라미터의 메서드 참조 (0) | 2023.09.13 |