Generic 클래스
: 클래스의 멤버변수나 혹은 메소드의 리턴 "타입", 매개변수등의 "타입"을 지정하지 않고 generic(일반적으로)하게 정의하는 클래스
* 동작은 같으나, 데이터 타입만 다른 경우 Generic으로 설계함으로 코드 생산성 향상
* Generic 클래스에서 사용되는 타입은 기본 자료형(primitive type)은 사용될 수 없고, Object타입의 자료형들만 사용할 수 있다.
* List 특징(ArrayList와 LinkedList의 공통점)
1. 중복 저장 허용
2. 저장 순서 유지(인덱스 존재)
* ArrayList
1. 저장 용량을 늘리는데 많은 시간 소요 - 단점
2. 데이터를 삭제하는데 많은 연산 - 단점
3. 데이터 참조가 매우 빠름 - 장점
* LinkedList
1. 저장 용량을 늘리는 과정이 매우 간단 - 장점
2. 데이터를 삭제하는 과정이 간단 - 장점
3. 데이터 참조가 불편 - 단점
List Method
* list.add(element) : 데이터 추가(저장)
* list.add(index, element) : index에 데이터 삽입
* list.get(index) : 데이터 참조(읽기, 검색)
* list.remove(index) : 데이터 삭제
* list.set(index, element) : 데이터 수정
* list.size() : List의 크기를 리턴
List 출력 방법
1. for 사용
2. Enhanced-for(향상된 for문) 사용
3. forEach() 사용
4. Iterator(반복자) 사용
* iterator() 메소드를 사용해서 인스턴스 생성 ex) Iterator<Integer> itr = list.iterator();
* hasNext() : iterator가 다음 원소를 가지고 있는 지(true, false 리턴)
* next() : 현재 iterator 위치의 원소 값을 리턴하고, iterator의 위치를 다음 원소의 위치로 변경