13.2 컬렉션이란?
: 자료를 저장하기 위한 구조
-컬렉션은 제네릭 기법으로 구현되어 있기 때문에 어떠한 타입의 데이터도 저장할 수 있다.
크기가 고정인 배열의 단점을 보완한, 가변 크기를 지닌 벡터를 사용하면 리스트를 편리하게 저장할 수 있다.
-모두 java.util 패키지에 포함되어 있다.


-List는 동적 배열을 정의한다.
-set은 집합을 정의한다.
-Map은 키가 주어지면 값을 반환하는 딕셔너리와 같은 자료구조를 정의하고 있다.
*사용자는 자신이 인터페이스를 구현하여도 되고(고급 사용자)
자신의 필요에 맞는 컬렉션 클래스를 선택하여 사용하면 된다.

Ex) ArrayList에 문자열을 저장하였다가 꺼내는 코드
String a[] = new String[] { "A", "B", "C", "D", "E" };
List<String> list = Arrays.asList(a);
(1) 전통적인 for 구문
for (int i=0; i<list.size(); i++)
System.out.println(list.get(i));
(2) for-each 구문
for (String s: list)
System.out.println(s);
(3) 반복자(Iterator)를 사용할 수 있다.
-반복자는 특별한 타입의 객체로,
컬렉션의 원소들을 접근하는 것이 목적이다.
-반복자는 모든 컬렉션에 적용할 수 있다.
*반복자는 java.util 패키지에 정의되어 있는
Iterator 인터페이스를 구현하는 객체이다.

1) ArrayList의 iterator() 메소드를 호출하여 반복자 객체를 얻는다.
2) 반복자 객체의 hasNext()와 next() 메소드를 이용하여 컬렉션의 각 원소들을 접근하게 된다.
String S;
Iterator e = list.iterator();
while(e.hasNext())
{
s = (String)e.next();
System.out.println(s);
}
(4) Stream 라이브러리를 이용하는 방법
-forEach 메소드와 람다식을 사용한다.
list.forEach((n) -> System.out.println(n));

1. List 계열, Set 계열, Map 계열, Queue 계열 등
2.
List: 순차적으로 데이터를 저장하고 접근할 때
→ 예: 학생 명단, 주문 목록 등
Set: 중복 없이 유일한 데이터를 저장할 때
→ 예: 사용자 ID 목록, 수강 과목 코드 집합 등
Map: 키-값 형태로 빠르게 검색할 때
→ 예: 학번-이름, 제품코드-가격
Queue: 순서대로 작업 처리할 때
→ 예: 프린터 작업 큐, 대기열 처리
3.
대표적인 메서드 예시:
add(E e): 요소 추가
remove(Object o): 요소 제거
contains(Object o): 포함 여부 확인
isEmpty(): 비어 있는지 확인
size(): 요소 개수 반환
iterator(): 반복자 반환