22장. List
자료 구조
- List (순서O)
- Set (순서X, 중복X)
- Queue (FIFO)
- map (key, value)
public interface Collection extends Iterable
- Iterator인터페이스를 사용하여 데이터를 순차적으로 가져올 수 있다.
- 여러 개의 객체를 하나의 객체에 담아 처리할 때 공통적으로 사용되는 메소드들 선언
- List, Set, Queue
List 인터페이스
- ArrayList : Not thread safe
- Vector : thread safe
- Stack : LIFO
- LinkedList : FIFO (List이자 Queue)
ArrayList가 구현한 인터페이스들
- Serializable, Cloneable, Iterable, Collection, List, RandomAccess
ArrayList의 생성자
- 보통 한가지 종류의 객체만 저장(타입지정)
- 변수 넣지 않으면 초기 크기는 10
ArrayList데이터 담기
- add(E e) : 가장 끝에 담음
- add(int index, E e) : 지정 위치 뒤로 하나씩 밀림
ArrayList데이터 꺼내기``****
- .size() 들어가 있는 데이터 개수
- .length 배열의 저장 공간 개수
- toArray() 배열로 꺼내기
Stack 클래스 : LIFO
- empty()
- peek() : 맨 위 리턴
- pop() : 맨 위 지우고 리턴
- push(E item) : 맨 위 저장
- search(Object o) : 위치 리턴
- ArrayDeque가 더 빠르지만 ArrayDeque는 Not thread safe.
23장. Set, Queue
Set : 값의 존재 유무를 확인하기 위함이 핵심. (순서X, 중복X)
- HashSet : 로드 팩터
- TreeSet :
- LinkedHashSet
Queue : FIFO
- LinkedList : 데이터가 나열되어 있는 상태에서 앞 뒤 값만 참조.
따라서 배열의 중간에 있는 데이터가 지속적으로 삭제되고, 추가될 경우에는
LinkedList가 배열보다 메모리 공간 측면에서 훨씬 유리하다.
크기 지정 안함. 데이터들이 앞 뒤로 연결되는 구조이기 때문에, 미리 공간을 만들어 놓을 필요가 없는것. (List, Queue 둘다 구현)
24장. Map
Map 인터페이스를 구현한 클래스
- HashMap
- TreeMap
- LinkedHashMap
- Hashtable
Map 주요 메서드
- keySet() : 키 목록을 Set으로 반환
- value() : 값 목록을 Collection으로 반환
- entrySet() : Map안에 Entry라는 타입의 Set반환
- size() : map 크기 반환
- clear() : 지움
- containsKey() 매개 변수로 넘긴 키가 존재하는지
- containsValue() 매개 변수로 넘긴 값이 존재하는지
일반적인 Map과 Hashtable 클래스의 차이점 (Map / Hashtable)
- 컬렉션 뷰 사용 / Enumeration 객체를 통해 데이터 처리
- 키, 값 쌍으로 데이터 순환 가능 / 불가능
- 이터레이션 처리 도중 데이터 삭제 가능 / 불가능
HashMap과 Hashtable 차이점 (HashMap /Hashtable)
- 키, 값에 null 저장 가능 / 불가능
- thread not safe / safe
Map으로 끝나는 클래스들을 여러 쓰레드에서 동시에 접근하여 처리할 필요가 있을 때에는 다음과 같이 선언해야함
- Map m = CollectionssynchronizedMap(new HashMap(...));
HashMap
- HashMap의 키는 기본 자료형과 참조 자료형 모두 될 수 있다.
- 직접 만든 클래스 사용할 경우 Object의 hashCode(), equal()잘 구현해 놓아야 함
- get() 할적에 없는 인덱스를 가져오면 collection은 ArrayIndexOutOfBoudsException예외처리를 하지만 Map은 null로 반환
- 동일한 키로 put()하면 대치됨 (ArrayList는 add() set())
TreeMap
- 숫자 > 알파벳 대문자 > 알파벳 소문자 > 한글 순으로 키를 정렬함
Properties
- Hashtable 확장. 시스템 속성값 확인 시 사용.