List 컬렉션
2019. 8. 14. 15:09ㆍIT/Java
List 컬렉션의 특징 및 주요 메소드
특징
- 인덱스로 관리
- 중복해서 객체 저장 가능
구현 클래스
- ArrayList
- Vector
- LinkedList
주요 메소드
기능 | 메소드 | 설명 |
---|---|---|
객체 추가 | boolean add(E e) | 주어진 객체를 맨끝에 추가 |
void add(int index, E element) | 주어진 인덱스에 객체를 추가 | |
set(int index, E element) | 주어진 인덱스에 저장된 객체를 주어진 객체로 바꿈 | |
객체 검색 | boolean contains(Object o) | 주어진 객체가 저장되어 있는지 여부 |
E get(int index) | 주어진 인덱스에 저장된 객체를 리턴 | |
isEmpty() | 컬렉션이 비어 있는지 조사 | |
int size() | 저장되어있는 전체 객체수를 리턴 | |
객체 삭제 | void clear() | 저장된 모든 객체를 삭제 |
E remove(int index) | 주어진 인덱스에 저장된 객체를 삭제 | |
boolean remove(Object o) | 주어진 객체를 삭제 |
-
객체 추가, 찾기, 삭제
List<String> list = ...; list.add("홍길동"); //맨끝에 객체 추가 list.add(1,"사람"); // 지정된 인덱스에 객체 삽입 String str = list.get(1); //인덱스로 객체 찾기 list.remove(0); //인덱스로 객체 삭제 list.remove("사람"); // 객체 삭제
-
전체 객체를 대상으로 반복해서 얻기
List<String> list =...; for(int i = 0 ; i < list.size(); i++ ){ String str = list.get(i); } for(String str : list){ // 향상된 for문 //저장된 총 객체수 만큼 루핑 }
ArrayList
List<E> list = new ArrayList<E>();
ex) List <String> list = new ArrayList<String>(30);
-
저장 용량(capacity)
- 초기 : 10
- 초기 용량 지정 가능
- 저장 용량을 초과한 객체들이 들어오면 자동적으로 늘어난다.
-
객체 제거
- 바로 뒤 인덱스부터 마지막 인덱스까지 모두 앞으로 1씩 당겨진다.
-
고정된 객체들로 구성된 List 생성
List<T> list = Arrays.asList(T... a);
List<String> list1 = Arrays.asList("돼지","토끼","말");
for(String name : list1 ) {
System.out.println(name);
}
List<Integer> list2 = Arrays.asList(1, 2, 3);
for(int value : list2 ) {
System.out.println(value);
}
Vector
List<E> list =new Vector<E>();
-
특징
Vector는 스레드 동기화(synchronization)가 되어 있기 때문에
복수의 스레드가 동시에 Vector에 접근해서 객체를 추가, 삭제하더라도 스레드에 안전하다.
- ArrayList - > public boolean add(..) {...}
- Vector - > public synchronized boolean add(..) {..} :멀티스레드 상태에선 Vector로!
LinkedList
List<E> list =new LinkedList<E>();
-
특징
- 인접 참조를 링크해서 체인처럼 관리
- 특정 인덱스에서 객체를 제거하거나 추가하게 되면 바로 앞뒤 링크만 변경
- 빈번한 객체 삭제와 삽입이 일어나는 곳에서는 ArrayList보다 좋은 성능을 발휘
'IT > Java' 카테고리의 다른 글
Map 컬렉션 / 검색기능을 강화시킨 컬렉션 (0) | 2019.08.14 |
---|---|
Set 컬렉션 (0) | 2019.08.14 |
14장 람다식 (0) | 2019.07.30 |
제네릭(Generic) (0) | 2019.07.25 |
스레드 - (2) (0) | 2019.07.25 |