일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 또뭐테그해야하냐
- 어레이리스트
- 단어의개수
- 백준알고리즘
- java
- 데큐
- 정렬
- 링크드해시맵
- Stack
- array
- 자바
- 백준 알고리즘
- 해시맵
- list
- 차이
- 배열
- 1152
- 별찍기
- class area
- 단계별로
- hashmpa
- Garbage Collecter
- 해시테이블
- 풀어보기
- 백준
- 메모리영역
- 알고리즘
- arraylist
- 자바 메모리 영역
- boj
- Today
- Total
장벚꽃박튤립
- 사실, Hashmap 경우에는 put한 순서대로 출력이 안나온다. 1 2 3 4 5 6 7 8 9 Map hashMap = new HashMap(); hashMap.put(5, "five"); hashMap.put(2, "two"); hashMap.put(4, "four"); hashMap.put(1, "one"); hashMap.put(3, "three"); // 5 2 4 1 3 System.out.println(hashMap); // {1=one, 2=two, 3=three, 4=four, 5=five} - LinkedHashMap같은 경우에는 LinkedList 자료구조 형태로 데이터가 저장이 되어 입력한 순서대로 저장됨. - HashMap과 마찬가지로 동기화는 보장 안됨. 1 2 3 4 5 ..
HashMap TreeMap 저장 해시를 이용하여 저장하기 때문에 순서를 보장하지 않는다. 엔트리를 트리 형태로 저장하여 저장할 때 키값을 기준으로 자동으로 정렬되어 저장 검색 해시를 이용하여 배열(Array)에 접근 가능하므로 O(1) 트리 구조의 특성상 특정 엔트리에 접근하기 위해서는 O(logn)
- 둘의 가장 큰 차이점은 동기화 보장 유무, 키와 값에 null 가능 여부 - 동기화가 필요없다면 해시맵을, 동기화 보장이 필요하다면 해시테이블 사용 - 동기화 보장 유무의 차이 외에는 차이가 거의 없으며 자바 기준으로 사용법도 똑같음 * 멀티쓰레드 프로그래밍에서는 하나의 객체를 여러 쓰레드가 동시에 접근할 수 있기 때문에 데이터의 일관성(Consistency)을 유지하기 위해 동기화가 필요. * 해쉬테이블의 동기화는 속도를 굉장히 느리게 해주기 때문에, 동기화가 보장되는 HashMap이 등장 -> ConcurrentHashMap * 동기화 보장 OK, 키와 값의 NULL 불가 * 스레드의 동기화
- Map 인터페이스 계열의 대표적인 클래스. - 키(Key)와 값(Value)로 데이터 관리 / 키로 값 추출 가능. - 키는 중복 허용 x - 멀티스레드에서는 HashTable을 사용 (동기화 보장을 해주는) - 해시를 이용하여 저장하기 때문에 순서를 보장하지 않는다. - 키 또는 값으로써 null을 허용 ★ - 해싱 검색을 사용하기 때문에 대용량 데이터 관리에도 좋은 성능. - 해쉬맵의 get()메서드는 해시값으로 해당 배열에 바로 접근이 가능하기 때문에 성능은 O(1)로 빠름 1 2 3 4 5 6 7 8 9 10 11 12 // HashMap 선언 HashMap map = new HashMap(); map.put(1, "AAA"); map.put(2, "BBB"); map.put(3, "CCC")..