본문 바로가기

Java & Spring

(23)
[JAVA] - Hash, HashTable (≒ HashMap) Hash 임의의 크기의 데이터(Key)를 고정된 크기의 데이터(Value)로 저장하는 구조이다. Key의 Hash값을 사용하여 값을 저장하고, Key-Value 개수에 따라 동적으로 크기가 증가하는 associative array이다. (associative : Key하나와 Value하나가 연관되어 있으며(1:1 구조), Key를 통해 연관되는 값을 얻을 수 있는 자료구조) Key에 대한 Hash값을 구하는 과정을 해싱(Hashing)이라고 하며, 이때 사용하는 함수를 해시함수라고 한다. Hash의 장점으로 Hash값 자체를 index로 사용하기 때문에 평균 시간복잡도가 O(1)로 매우 빠르다. Hash Table (≒ Hash Map) Map 인터페이스를 구현한 컬렉션으로 Key와 Value가 짝으로 ..
[JAVA] - 연결 리스트(LinkedList) 연결 리스트(LinkedList)란 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식의 자료구조이다. 자료의 순서는 정해져 있지만, 메모리상 연속성이 보장되지는 않는다. 데이터를 관리하는데 용이하지만 데이터를 추가하거나 삭제했을 때 Index가 밀리거나 당겨지지 않고 NULL 상태로 유지되기 때문에, 탐색 속도가 느리다는 단점이 있다. 코드를 사용할 때 비슷한 형태인 ArrayList와 비교가 많이 되는데, 데이터의 추가/삭제가 많이 필요한 경우 LinkedList를, 탐색이나 정렬을 하는 용도로는 ArrayList가 적합하다. (ArrayList는 Index가 존재하여 데이터의 추가/삭제가 일어날 경우 빈 공간이 밀리거나 당겨지기 때문에 탐색 속도 ↑) 장점 ① 데이터 공간을 미리 할당하..
[JAVA] - 배열(Array), ArrayList 배열(Array) int a = 1; char num = 'one'; 와 같이 변수는 하나의 값만 저장할 수 있다. 저장해야 할 값이 적으면 위와 같이 선언을 해도 큰 문제는 없지만 저장해야 할 값이 많아질수록 많은 변수가 필요하고, 변수에 값을 저장하는데 많은 시간이 들기 때문에 매우 비효율적이다. 이런 문제를 해결하기위해 배열을 사용하면 된다. 배열은 연속된 공간에 값들을 나열시키고, 값들에 대해 인덱스(Index)를 부여해 놓은 자료구조이다. 각 데이터를 인덱스와 1대1 대응시키며, 데이터가 메모리 상에 연속적으로 저장된다. 인덱스는 대괄호 []와 같이 사용하여 배열 항목의 값을 저장하거나 읽을 때 사용된다. 예시로, 10개의 값을 배열로 선언해 보겠다. int[] age = { 10, 15, 20..