
컬렉션이란 안드로이드를 비롯한 자바 프로그램을 작성하는데 빼놓을 수 없는 중요한 도구.
컬렉션은 제네릭이라는 기법으로 구현되어 있기 때문에 제네릭에 대한 공부도 필요함.
컬렉션은 고정 크기의 배열이 가지는 단점을 극복하고, 요소라고 불리는 객체들의 사입 , 삭제 검색 기능을 갖춘 가변 크기의 컨테이너임.

첫째 제네릭이라는 기법으로 구현으로 클래스나 인터페이스의 이름은 < E >,< K >,< V >등으로 항상 포함. 이들은 타입 매개 변수라고하며 컬렉션 요소를 일반화 시킨타입. 그러므로 Vector<E>에서 E 대신 Integer나 String으로 구체적인 타입을 지정하여 사용.
둘째 컬렉션 요소는 객체만 가능 int , char, double 기본 타입의 데이터는 기본적으로 컬렉션 요소로 불가능.
배열을 가변 크기로 다룰 수 있게 하고, 객체의 삽입, 삭제, 이동이 쉽도록 구성한 컬렉션 클래스. 벡터는 삽입되는 요소의 개수에 따라 자동으로 크기를 조절하고, 요소의 사입과 삭제 따라 자동으로 요소들의 자리를 이동.
👉 백터생성
백터를 생성할 때, vector< E >에 요소로 사용할 클래스 타입을 지정.
Vector<Integer> v = new Vector<Integer>():👉 백터 요소 삽입
add()메소드를 이용하면 벡터의 끝이나 중간에 요소를 삽입 가능.
v.add(Integer.valueof(5));👉 백터 내의 요소 알아내기
백터 내의 존재하는 요소를 알아내기 위해서는 get(), elementAT() 메소드를 이용함.
Integer obj = v.get(1); int i - obj.intValue();👉 백터의 크기와 용량 알아내기
백터의 크기란 백터에 들어 있는 요소의 개수를 말하며 size()메소드를 이용하고, 용량이란 벡터가 수용할 수 있는 현재 크기를 말하며 capacity()를 이용함.
int len = v.size(); int cap = v.capacity();👉 백터에서 요소 삭제
백터 내의 임이의 인덱스에 있는 요소를 삭제가능 remove()메소드 이용
v.remove(1);
가변 크기의 배열을 구현한 컬렉션으로서 vector클래스와 거의 동일하다. 크게 다른점은 스레드 간의 동기화를 지원하지 않기 때문에, 다수의 스레드가 동시에 ArrayList에 요소를 삽입하거나 삭제할 때 충돌이 발생할 소지가 있음.
순차적으로 요소를 검색할 때 Iterator< E > 인터페이스를 사용하면 편리하며 사용할 때는 컬렉션 매개 변수와 동일한 타입을 설정.
Iterator<Integer> it = v.iterator();
컬렉션은 키와 값의 쌍으로 구성된 요소로 K는 키로 사용할 데이터 타입 V는 값으로 사용할 데이터 타입
키와 값을 저장하는 자료 구조를 가지고 put() , get() 메소드를 이용하여 요소를 삽입하거나 검색함.
인덱스를 이용하여 요소를 접근할 수 없고 오직 키로 검색해야 함.
👉 해시맵 생성
해시맵은 K에 '키'로 v에는 '값'으로 사용할 구체적인 타입을 지정하여 생성
HashMap<String, String> h = new HashMap<String, String>();👉 해시맵에 요소 삽입
put() 메소드에 '키', '값'을 인자로 전달
h.put("baby","아기"); h.put("apple","사과"):👉 '키'로'값'읽기
get()메소드에 '키'를 전달하면, '값'을 얻을 수 있으며 '값'은 문자열임.
String kor1 = h.get("baby"); // kor1 = "아기"👉 '키'로 요소 삭제
remove() 요소 삭제시 이용
h.remove("apple");👉 요소 개수 알아내기
size()메소드 호출
int n = h.size(); // 현재 h 내에 있는 요소의 개수 리턴👉 해시맵 전체 검색
HashMap의 keyset()메소드는 모든 키를 Set컬렉션 객체로 만들어 리턴함.
Set<String> keys = h.keyset(); // 해시맵에 h에 있는 모든 키를 Set 컬렉션으로 리턴 Iterator<String> it = keys.iterator(); // Set에서 문자열을 검색할 수 있는 Iterator 리턴