일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- hashmpa
- 백준알고리즘
- arraylist
- 링크드해시맵
- list
- 단계별로
- 자바
- 차이
- 별찍기
- 어레이리스트
- 또뭐테그해야하냐
- 메모리영역
- array
- 자바 메모리 영역
- 백준
- java
- 정렬
- 단어의개수
- boj
- 데큐
- 백준 알고리즘
- Stack
- 1152
- 해시맵
- 풀어보기
- Garbage Collecter
- 배열
- class area
- 알고리즘
- 해시테이블
- Today
- Total
장벚꽃박튤립
0. JVM은 OS로부터 메모리를 할당받는다. - JVM은 할당받은 메모리를 영역지어서 관리한다. - OS로부터 받은 메모리를 Runtime Data Area라 칭한다. - Runtime Data Area는 5개 영역으로 구분짓는다. - Static Area, Stack Area, Heap Area, Native Method Stack Area, PC Register 1. Class Area or Method Area or Static Area - 모두 같은 영역을 칭함. - 전역변수와 정적 멤버변수(static 변수)는 이 영역에 저장된다. ★ - static area는 프로그램의 시작부터 종료가 될 때까지 메모리에 남는다. - 이는, 전역변수가 프로그램 종료될 때까지 어디서든 사용이 가능한 이유. 2..
- 가변 길이 배열 - 정수 인덱스를 이용하여 배열에 액세스 가능 - 동기화 보장 / 하나의 스레드만 벡터의 메소드 호출 가능 ★ - 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과 동일) - 일반적으로, 데이터베이스를 생각하나 데이터베이스는 대용량의 데이터를 처리하기 용이하게 구성해서 디스크로 써 놓은 형태이기 때문에 속도가 느린 편( 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..
- 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(..
- FIFO(First in First out) 구조 (선입선출) - 가장 오래된 데이터를 front - 가장 최근에 입력된 데이터를 rear - 삽입은 rear에서, 삭제는 front에서 진행 - 큐가 비었음 > rear == front - 자바에선 Queue API 제공 1 2 3 4 5 6 7 8 // 큐 선언 Queue q = new LinkedList(); q.offer(10); // 10 q.offer(20); // 10 20 q.offer(30); // 10 20 30 while(!q.isEmpty()) System.out.println(q.poll()); // 10 20 30 - 자바에서 큐는 인터페이스 형태이므로 LinkedList 혹은 Array를 통해 사용 가능 - 큐는 원소의 추가 ..
- LIFO (Last in First out) 구조를 가진 자료구조 - 원소의 삽입, 삭제가 한쪽 끝에서만 이루어 진다(top) - 삽입(push) 추출(pop) 읽기(peek) 등의 메소드 1 2 3 4 5 6 7 8 9 // 스택 선언 Stack stack = new Stack(); stack.push(3); // 3 stack.push(2); // 2,3 stack.push(1); // 1,2,3 - LIFO while(!stack.isEmpty()) System.out.println(stack.pop()); - 용도 지역 변수 저장 함수 호출의 순서 제어 수식 계산
배열 (Array) - 크기를 동적으로 변경 불가 - 배열 초기화시 메모리에 할당되어 ArrayList보다 속도가 빠르다. 어레이리스트 (ArrayList) - 크기를 동적으로 변경 가능 - 데이터 추가 삭제시 메모리를 재할당하기 때문에 속도가 배열보다 느리다. - 배열이 가득차는 경우 알아서 그 크기를 2배로 할당하고 복사를 수행 Array ArrayList 사이즈 초기화시 고정 초기화시 사이즈를 표시 x 변경 사이즈 변경 불가 추가 삭제 가능(add, remove) 다차원 가능 불가
- 자바에서 지원하는 2가지 형태의 리스트 - 인덱스를 이용해서 데이터를 가져오는 것(검색 및 조회)이 빈번하다면 내부적으로 배열을 이용하는 ArrayList - 데이터의 추가/삭제가 빈번하다면 LinkedList - 두 리스트 제너릭 사용을 권고한다 (없을 시 원소의 값으로 유추하여 자동으로 선정) - 두 리스트의 메소드는 비슷하다. 1 2 3 4 5 6 7 8 9 // 어레이리스트 ArrayList arrList = new ArrayList(); arrList.add(10); // 10 원소 추가 arrList.remove(0); // 0번째 순서에 있는 값 삭제 // 링크드리스트 LinkedList linkedList = new LinkedList(); linkedList.add(20); // 추가..