본문 바로가기

자료구조5

[Java] 벡터 Vector 벡터는 여러 오브젝트들의 집합이다. 배열과 동일하게 int index, value 쌍으로 이루어져 있으며, 길이의 변경이 가능하기 때문에 값을 추가, 제거할 수 있다. 벡터는 자신의 저장 공간을 자동적으로 최적화하며, 이로 인해 벡터에 저장된 데이터의 값보다 실제 차지하는 용량이 더 크다. 용량을 미리 차지하고 있다가, 값이 추가되어 용량이 부족해지면 한 번에 어느정도 추가 용량을 차지하는 방식의 계단식 증가가 이루어진다. Iterator를 사용할 경우 fail-fast 방식을 통해 값을 반환한다. Fail-Fast 방식: 벡터가 어느 쓰레드에 생성된 이후 다른 쓰레드에서 구조의 수정이 일어날 경우, ConcurrentModificationException 을 일으킨다. 이를 통해 여러 개의 쓰레드가 동.. 2021. 5. 30.
[Java] PriorityQueue와 Queue의 차이 이전에 작성했던 Queue 관련 글 bmangrok.tistory.com/entry/Queue-%ED%81%90 PriorityQueue와 Queue는 이름만 비슷할 뿐 그 쓰임새는 매우 다르다. 원소를 꺼낼 때 Queue는 철저하게 FIFO을 따르지만 PriorityQueue는 정해진 우선 순위에 따라 원소를 출력한다. 우선 순위는 사용자가 특정해줄 수 있고, 특정해주지 않는다면 오름차순으로 출력된다. 즉, PriorityQueue를 poll() 하는경우 가장 낮은 숫자가 나온다. 이 사실을 모르고 Queue를 계속 쓰다가 원하는 결과가 안나와서 한참 씨름했다. 인자로 넣어줄 리스트 몇 개를 확인해보니 오름차순으로 정렬되어 있길래, 다른 리스트도 전부 오름차순인 줄 알았는데, 오름차순이 아닌게 있었다... 2021. 4. 16.
정규표현식 주요 표현 정리 표현 의미 \d 숫자 \w 아무 단어 (숫자포함) \s 공백문자 (탭, 띄어쓰기, 줄바꿈) \D 숫자가 아닌 것 \W 단어가 아닌 것 \S 공백문자가 아닌 것 [ ] 어떤 문자가 올지 규정 [0-9] 0부터 9까지 [a-z] a부터 z까지 a{5} a가 5개 a{3, 5} a가 3~5개 a{ , 5} a가 5개 이하 a{3, } a가 3개 이상 a+ a가 1개 이상 a* a가 0개 또는 여러개 a? a가 0개 또는 1개 ^[a-z] a~z중 하나로 시작 [a-z0-9] a~z, 0~9 중 하나 2021. 2. 26.
[Java] 큐 Queue 자바 Queue의 특징 먼저 들어간 변수가 먼저 나오는 선입선출 (First in First out) 형태이다. 변수를 집어넣은 순서대로만 꺼낼 수 있으며, Queue의 한가운데에 있는 변수만 꺼내는 것은 불가능하다. 주요 메소드 boolean add(E e) - Queue에 원소를 추가한다. 성공적으로 추가하면 true를 반환하고, 공간 부족으로 인해 실패하면 IllegalStateException 이 발생한다. boolean offer(E e) - Queue에 원소를 추가한다. 성공적으로 추가하면 true를 반환하고 실패하면 false를 반환한다. E remove() - Queue의 가장 먼저 들어간 원소를 제거하며, 그 원소를 return한다. Queue가 비어있으면 NoSuchElementExce.. 2021. 2. 20.
[Java] 해쉬맵 HashMap import java.util.HashMap; class myClass { public static void main(String [] args) { HashMap hm = new HashMap(); } } key로 String 값을 가지며, value로 Integer값을 가지는 해쉬맵 hm의 생성 해쉬맵은 key-value 쌍으로 이루어진 자료구조이다. key는 중복이 불가한 유일한 값이며, value는 중복해서 입력할 수 있다. 이름대로 Hashing을 이용하여 값을 저장하기 때문에, 다량의 정보 속에서 특정 정보를 검색해내는데 탁월한 성능을 보인다. 저장된 정보의 양이 늘어나더라도 탐색에 소요되는 시간이 늘어나지 않는다는 점이 해쉬맵의 가장 큰 장점이다. 해쉬맵에 저장된 값들을 꺼낼 때는 그 순서가.. 2021. 2. 16.