//검색 intindexOf(Object o); // 못 찾으면 -1 intlastIndexOf(Object o); booleancontains(Object o); Object get(int index); // 특정 위치 객체 읽기 Object set(int index, Object element); // 특정 위치 객체 변경
예: int arr -> 1, 2, 3, 4, 5 이면 n번째 arr 주소 + 4 byte * n
단점1: 크기 변경시 데이터 복사가 일어남
단점2: 비순차적 데이터 추가 삭제에 시간이 많이 걸린다, 맨끝에 하는것 제외
LinkedList는 배열의 단점 보완, 단점은 데이터를 읽는 시간이 더 걸린다. 구현에 따라 Double LinkedList, Circular Double LinkedList가 있다.
ch11-15 Stack and Queue
Stack: LIFO 구조, 마지막 저장 제일 먼저 꺼낸다, push, pop 자바에서 Stakc이란 클래사가 있음
1 2 3 4 5 6 7
Stacks=newStack();
booleanempty(); Object pop(); // 비었을때는 EmptyStackException 발생 Object push(Object item); intsearch(Object o); // 못찾으면 -1, index가 1부터 시작 Object peek();
Queue: FIFO 구조, 제일 먼저 저장 제일 먼저 꺼낸다, offer, poll 자바에서 Queue는 인터페이스 이다. 구현체로 new 해야함, API 문서 보면 많은 구현체가 있음 (LinkedList, Abstract Queue, ArrayBlockingQueue, ArrayDeque, PriorityQueue 등등)
1 2 3 4 5 6 7 8 9 10
Queueq=newLinkedList();
booleanoffer(Object o); // 추가 booleanadd(Object o); // 저장 공간 부족하면 IllegalStateException 발생
Object poll(); // 꺼내기, 비어 있으면 null 반환 Object remove(); // 비어 있으면 NoSuchElementException 발생
Object peek(); // 비어 있으면 null 반환 Object element(); // peek 비어 있으면 NoSuchElementException 발생
ch11-19 스택과 큐 의 활용
스택: 수식계산, 수식괄호 검사, 워드프로세서의 undo/redo, 웹브라우저의 뒤로/앞으로 큐: 최근사용문서, 인쇄 작업 대기목록, 버퍼(buffer)
ch11-22~24 Iterator, ListIterator, Enumeration
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
publicinterfaceCollection { //... public Iterator iteartor(); //... }
booleanhasNext(); // 읽어올 요소가 남아 있는지 확인 Object next(); // 다음 요소를 읽어 온다
SortedSet subSet(Object fromElement, Object toElement); // 범위 검색 SortedSet headSet(Object toElement); // 지정 된 객체보다 작은 것을 반환 SortedSet tailSet(Object fromElement); // 지정된 객체보다 큰것을 반환
ch11-46 HashMap과 Hashtable - 순서 X, 중복 (키X, 값O)
Map 인터페이스를 구현. 데이터를 키와 값의 쌍으로 저장
해시 함수(hash function)로 해시 테이블(Hash table)에 데이터를 저장, 검색
키(key) -> 해시함수(hash function) -> 해시코드(hash code) = 배열 index
// 동기화 버전 static Collection synchronizedCollection(Collection c); static List synchronizedList(List list); static Set synchronizedSet(Set s); static Map synchronizedMap(Map s); static SortedSet synchronizedSortedSet(SortedSet s);
ListsyncList= Collections.synchronizedList(newArrayList(...)); // 동기화 되지 않은
// 변경 불가 (readonly) 버전 static Collection unmodifiedCollection(Collection c); //....
// 싱글톤 컬렉션 만들기 static List singletonList(Object o); // 객체 1개만 저장 static Set singleton(Object o); static Map singletonMap(Object key, Object value);
// 한 종류의 객체만 저장 하는 컬렉션 만들기 static Collection checkedCollection(Collection c, Class type); static List checkedList(List list, Class type); static Set checkedSet(Set s, Class type); //....