일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 메모리영역
- 단어의개수
- Stack
- 백준알고리즘
- 배열
- 단계별로
- 별찍기
- 백준
- 링크드해시맵
- 알고리즘
- 백준 알고리즘
- boj
- hashmpa
- 차이
- java
- 1152
- arraylist
- 해시테이블
- 자바
- 정렬
- Garbage Collecter
- class area
- 데큐
- 자바 메모리 영역
- 어레이리스트
- array
- 또뭐테그해야하냐
- 해시맵
- list
- 풀어보기
- Today
- Total
장벚꽃박튤립
- 가변 길이 배열 - 정수 인덱스를 이용하여 배열에 액세스 가능 - 동기화 보장 / 하나의 스레드만 벡터의 메소드 호출 가능 ★ - ArrayList는 동기화가 보장 안됨. - 멀티스레드가 아니라면 성능이 좋은 ArrayList를 사용할 것. 1 2 3 4 5 6 7 8 9 // 벡터 선언 Vector v = new Vector(); v.add("One"); v.add("Two"); v.add("Four"); v.add("Three"); for(String str : v) System.out.println(str); // One Two Four Three
- 사실, 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)
- 키와 값을 엔트리 형태로 저장하는데, 이 엔트리는 Tree구조로 저장되어 있 - 기본적인 검색 성능은 Hashmap이 뛰어나지만 정렬이 필요한 경우에는 Treemap - 해시맵과는 달리 Key값으로 정렬이 되어 저장됨 ★ - 자동정렬 때문에 대량의 데이터를 삽입, 삭제시 다른 맵보다 오래 걸림 - Tree구조 특성상 특정 엔트리에 접근하려면 O(logn) 성능을 보임 (HashMap : O(1)) ★ 1 2 3 4 5 6 7 8 9 10 11 // 트리맵 선언 TreeMap tm = new TreeMap(); tm.put(3, "Three"); tm.put(1, "One"); tm.put(4, "four"); tm.put(2, "two"); System.out.println(tm); // {1=One..
- 둘의 가장 큰 차이점은 동기화 보장 유무, 키와 값에 null 가능 여부 - 동기화가 필요없다면 해시맵을, 동기화 보장이 필요하다면 해시테이블 사용 - 동기화 보장 유무의 차이 외에는 차이가 거의 없으며 자바 기준으로 사용법도 똑같음 * 멀티쓰레드 프로그래밍에서는 하나의 객체를 여러 쓰레드가 동시에 접근할 수 있기 때문에 데이터의 일관성(Consistency)을 유지하기 위해 동기화가 필요. * 해쉬테이블의 동기화는 속도를 굉장히 느리게 해주기 때문에, 동기화가 보장되는 HashMap이 등장 -> ConcurrentHashMap * 동기화 보장 OK, 키와 값의 NULL 불가 * 스레드의 동기화
- 데이터를 테이블 형식으로 구성 가능 - 키와 값을 하나의 엔트리로써 테이블에 저장 (HashMap과 동일) - 일반적으로, 데이터베이스를 생각하나 데이터베이스는 대용량의 데이터를 처리하기 용이하게 구성해서 디스크로 써 놓은 형태이기 때문에 속도가 느린 편( Disk I/O 비용) 출처 : https://m.blog.naver.com/PostView.nhn?blogId=sysganda&logNo=30151542946&proxyReferer=https%3A%2F%2Fwww.google.com%2F Java Hashtable( 해시 테이블 ) 예제, 간단한 값 넣었다 빼기 Java Hashtable( 해시 테이블 ) 예제, 간단한 값 넣었다 빼기 데이터를 테이블 형식으로 구성하고자 할 ... blog.na..
- 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")..
- Deque (덱 혹은 데큐)라 불리며 큐의 응용 - 큐의 양쪽에서 삽입과 추출을 수행할 수 있는 자료구조 - 자바에서 덱은 인터페이스로 구현되어 있다. (ArrayDeque, LinkedBlockingDeque, ConcurrentLinkedDeque, LinkedList 클래스) - Stack에서의 push, pop과 Queue에서의 offer, poll 모두 사용 가능 1 2 3 4 5 6 7 8 // 덱 선언 Deque deque = new ArrayDeque(); deque.offer(1); // 1 deque.push(2); // 1 2 deque.offerLast(3); // 3 1 2 while(!deque.isEmpty()) System.out.println(deque.pollLast(..