Formoat's Open Blog
컬렉션 - List 본문
인터페이스 | 구현 클래스 | 특징 |
List | ArrayList, Vector, LinkedList | 순서 유지, 인덱스로 관리, 중복해서 객체 저장 가능 |
1. ArrayList
인덱스를 이용해 요소들을 관리한다는 점은 배열과 유사하다. 하지만 배열과 달리 저장 공간이 부족할 경우 자동으로
크기가 늘어난다는 점이 다르다. 용량을 특정하지 않을경우 기본값은 10이다. 요소들은 0번 인덱스부터 차례로 저장이 되고,
특정 인덱스의 요소를 제거할 경우 해당 인덱스의 바로 뒷부분에 저장된 요소부터 한칸씩 앞으로 이동한다. 반대로
특정 인덱스에 요소를 추가하는 것도 가능하다. 이도 마찬가지로 인덱스 요소부분부터 한칸씩 뒤로 이동한다. 이 때문에
많은 데이터를 특정 인덱스에 추가/삭제할 경우 ArrayList가 아닌 LinkedList를 사용하는게 더욱 효율적 이다.
2. Vector
Vector는 ArrayList와 동일한 구조로 이루어져 있다. 차이점은 메소드가 synchronized로 이루어져 있기 때문에
멀티 스레드 환경에서 동기화 작업을 통해 안전하게 사용 할 수 있다.
3. LinkedList
인덱스를 통해 요소를 관리하지 않고, 요소의 head와 tail의 주소값을 참조하여 체인처럼 연결시켜 관리한다.
요소의 추가/삭제를 할 경우 추가/삭제된 곳의 앞 뒤 링크만 변경 하고 나머지 링크값은 그대로 유지된다.
4. Arrays.asList
고정된 List를 생성할 때 사용되며 Arrays 클래스에서 제공하는 asList(T t ... ) 메소드를 이용해 List 객체 생성시
asList 메소드에 대입한 매개값으로 이루어진 요소들만을 가진 List 객체를 생성하게 되며 이후 이 List 에는 요소를 추가/삭제 할 수 없다.
Function | Return Type | Method | Remarks |
추가 | boolean | add(E e) | 해당 리스트에 전달된 요소를 추가 |
void | add(int index, E e) | 해당 리스트의 특정 위치에 전달된 요소를 추가 | |
E | set(int index, E e) | 해당 리스트의 특정 위치에 존재하는 요소를 전달된 요소로 대체 | |
검색 | boolean | contains(Object o) | 해당 리스트가 전달된 요소를 포함하고 있는지 확인 |
E | get(int index) | 해당 리스트의 특정 위치에 존재하는 요소를 반환 | |
boolean | isEmpty() | 해당 리스트가 비어있는지 확인 | |
int | size() | 해당 리스트 요소의 총 개수를 반환 | |
boolean | equals(Object o) | 해당 리스트와 전달된 객체가 같은지 확인 | |
제거 | void | clear() | 해당 리스트의 모든 요소를 제거 |
boolean | remove(int index) | 해당 리스트의 특정 위치에 존재하는 요소를 제거 | |
boolean | remove(Object o) | 해당 리스트에서 전달된 객체를 제거 | |
기타 | Iterator<E> | iterator() | 해당 리스트의 반복자를 반환 |
Object[] | toArray() | 해당 리스트의 모든 요소를 Object타입의 배열로 반환 |
<표> List 컬렉션의 주요 메소드
ListExample.java
public class ListExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("김태호"); // 리스트에 요소추가
list.add("홍길동"); // 리스트에 요소추가
list.add("박상철"); // 리스트에 요소추가
list.add(0, "감성우"); // 리스트에 0번 인덱스에 요소 추가
list.remove(3); // 리스트의 3번 인덱스의 요소 제거
list.remove("김태호"); // 리스트의 "김태호"라는 요소 제거
for (String str : list)
System.out.println(str);
}
}
// 실행결과 //
----------------------------------------------------
감성우
홍길동
'Java > Java Basic' 카테고리의 다른 글
컬렉션 - Map (0) | 2019.09.04 |
---|---|
컬렉션 - Set (0) | 2019.09.04 |
컬렉션 프레임워크 (Collection Framework) (0) | 2019.09.03 |
함수적 인터페이스 - Predicate (0) | 2019.09.03 |
함수적 인터페이스 - Operator (0) | 2019.09.03 |