컬렉션
- 여러 객체(데이터)를 모아 놓은 것
- 컬렉션 기능 : 크기 자동조정/추가/수정/삭제/반복/순회/필터/포함 확인 등...
프레임워크(framework)
- 틀 작업
- 정형화된(틀이 있는) 프로그래밍 방식
- 정해둔대로 하면 되니깐 프로그래밍 생산성이 올라감 -> 유지보수성이 높음
라이브러리
- 다른 사람이 미리 만들어 놓은 것을 모아 놓은 것
- 오디오 라이브러리, 통계 라이브러리, 그래픽 라이브러리...처럼 이미 만들어 놓은 것
컬렉션 프레임워크
- 컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식
- 객체를 다룬다는 것은 저장,삭제,검색,정렬 등...을 하는 것!
- 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스를 제공하는것을 '컬렉션 클래스'라고 함
컬렉션 클래스
- 다수의 데이터를 저장할 수 있는 클래스(ex) Vector, Arraylist, HashSet)
컬렉션 프레임워크의 핵심 인터페이스
List
- 순서가 있는 데이터의 집합, 중복을 허용
- 순서란 저장되는 순서를 유지한다는 뜻
- 중복허용은 같은 값을 저장할 수 있다는 뜻
- ex) 대기자 명단
List의 대표적인 컬렉션 클래스 : ArrayList, LinkedList


- int indexOf(Object o) :
- 어떤 객체가 몇번째 저장되어 있는지 찾을때 쓰는 메서드
- 객체가 저장되어 있는 위치를 알려줌.
- 왼쪽에서 오른쪽으로 찾음.
- int lastIndexOf(Object o)
- 반대) 오른쪽에서 왼쪽으로 찾음.
- 찾는 방향만 다르고, int indexOf(Object o)와 같음.
- void sort(Comparator c) : 정렬
- List subList(int fromindex, int toindex)
- 전체에서 일부의 요소를 뽑아내서 새로운 리스트를 만들어 내는 것
Set (집합)
- 순서가 없는 데이터 집합, 중복 허용하지 않음
set의 대표적인 컬렉션 클래스 : HashSet, TreeSet



Map
- 키(Key)와 값(value)의 쌍(pair,Entry)으로 이루어진 데이터의 집합
- 순서 없음, 키는 중복을 허용하지 않고, 값은 중복을 허용
- ex)우편번호, 지역번호(서울,02처럼 한 쌍으로 묶어져 있는것!)
- ex) 키(id) 값(password) -> id는 중복X password는 중복될 수 있음
Map의 대표적인 컬렉션 클래스 : HashMap, TreeMap
- LinkedHashMap : HashMap은 원래 순서가 없는데, LinkedHashMap은 서로 연결 돼있으니깐 순서가 있음!


- Object put(Object key, Object value)
- Map인터페이스를 구현한 컬렉션 클래스에 객체를 추가할 때는 put, putAll 메서드를 사용함
- key, value를 같이 저장하게 돼 있음.
- Object remove(Object key) : 삭제
- boolean containsKey(Object key) : 검색
- boolean containsValue(Object key) : 검색
- Object get(Object key) : 검색
- Set entrySet(), Set keySet(), Collection values()
- Map에 저장되어 있는 데이터를 읽기
- Set keySet()이란 메서드를 호출하면 Map에 저장되어 있는 key만 읽는다!
- Collection values()
- 값만 읽어올 때
- values는 반환 타입이 Collection 인데,??
- 그 뜻이... 순서가 있어도 되고, 없어도 되고, 중복이 있어도 되고, 없어도 된다
- 컬렉션의 자손이 List와 Set이고, 어떤 모양으로 와도 된다는 것.. -> 그래서 Collection 타입으로 돼 있다!
- key, value를 합쳐서 Entry라고 하고,
- Entry를 읽어오는게 Set entrySet()
- EntrySet 메서드를 호출하면 key와 value를 하나로 묶은 객체를 Set으로 반환하는 것!
컬렉션 인터페이스의 메서드
