Backend/JAVA-자바
JAVA 14-1. 컬렉션 프레임워크 - List 컬렉션
사랑짱
2021. 7. 4. 21:14
◆ 컬렉션 프레임워크(Collection Framwork)
- C.R.U.D를 효율적으로 하기 위해 제공되는 컬렉션 라이브러리
- 인터페이스를 통해서 정형화된 방법으로 다양한 컬렉션 클래스 이용
- Java.util 패키지에 포함
◆ 컬렉션 프레임워크의 주요 인터페이스
1) List 계열 - ArrayList, Vector, LinkedList
- 순서를 유지하고 저장
- 중복 저장이 가능
2) Set 계열 - HashSet, TreeSet
- 순서를 유지하지 않고 저장
- 중복 저장 불가
3) Map 계열 - HashMap, Hashtable, TreeMap, Properties
- 키와 값의 쌍으로 저장
- 키는 중복 저장 불가/ 값은 상관없음
◆ List 컬렉션
- List<T> 인터페이스의 성질 : 순서를 보장하고 객체의 중복을 허용한다.
1) ArrayList
- 초기용량 : 10 (따로 지정 가능)
- 저장 용량을 초과하여 객체가 들어오면 자동적으로 늘어남.
- 객체 제거가 가능(단, 삭제된 인덱스 뒤부터 마지막 인덱스까지 모두 앞으로 1씩 당겨짐)
※ 배열의 Helper class : Arrays
- Arrays의 메소드를 활용하여 다양한 기능(asList(), sort() 등)을 지원 받자!!!!!
2) Vector
- 내부 구현은 ArrayList와 동일
- Thread synchronization(스레드 동기화)가 가능하여
복수의 Thread가 동시에 접근하여 객체를 추가/삭제하여 안전하게 조작 가능
3) LinkedList
- 인접 참조를 링크하여 체인처럼 관리
- 특정 인덱스에서 객체를 제거하거나 추가하게 되면 바로 앞뒤 링크만 변경
- 빈번한 객체 삭제와 삽입이 일어나는 곳에서는 ArrayList보다 좋은 성능
※ ArrayList와 LinkedList 비교
- 객체 추가/제거 빈번하다면 LinkedList 사용
- 객체 검색 및 순차적 객체 추가는 ArrayList 혹은 배열 사용
구분 | 순차적으로 추가/제거 | 중간에 추가/제거 | 검색 |
ArrayList | 빠르다 | 느리다 | 빠르다 |
LinkedList | 느리다 | 빠르다 | 느리다 |
※ List 컬렉션의 주요 메소드
※ List의 전체 요소를 순회(traverse)하는 방법
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
public class ArrayListExam {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Stirng_1");
list.add("Stirng_2");
list.add("Stirng_3");
list.add("Stirng_4");
list.add("Stirng_5");
//-----------------------------------------------------//
// 리스트의 전체 요소를 순회하는 방법들
//-----------------------------------------------------//
//1. method : 직접 for문과 리스트의 크기를 이용하여 순회(traverse)
for(int i = 0 ; i < list.size(); i++) { //전체 리스트의 요소 순
String str = list.get(i); //해당 인덱스 번호의 구슬(객체) 얻기
log.info(str);
} //Classical for
log.info("======================");
//2. method : enhanced for문을 이용하는 방법(단, 인덱스 번호가 필요없을 때)
for(String s : list) { //전체 리스트의 요소 순회
log.info(s);
} //enhanced for
log.info("======================");
//3-1. method : List.forEach() 최종처리 메소드를 이용한 순회
//void accept(T t);
list.forEach(t -> log.info(t)); //람다식을 구현하여 요소 출력
log.info("======================");
//3-2. method : List.forEach() 최소처리 메소드를 이용한 순회
list.forEach(log::info); //메소드 참조를 이용하여 요소 순회
//-----------------------------------------------------//
} //main
} //end class
|
cs |