TreeMap TreeMap은 HashMap과 마찬가지로 Map 컬렉션 중 하나이다. 같은 Tree 구조로 이루어진 TreeSet과 차이점은 TreeMap이 Map.entry()를 저장한다는 점이다. TreeMap은 이진탐색트리(BinarySearch Tree)의 구조로 되어있어, 데이터를 넣을 때 자동으로 정렬된다. TreeMap은 일반 Map보다 데이터 추가, 삭제에는 시간이 오래 걸리지만 정렬되어 저장된다는 점 때문에 조회가 빠르다. 기본적으로 Key값을 기준으로 오름차순으로 정렬된다. 그러나 Key값의 데이터타입이 Comparable이 구현되어있지 않은 클래스 이거나, 정렬 방법을 설정하려면 생성자의 매개변수로 Comparator 클래스를 구현하여 넣어주어야 한다. TreeMap의 구현 레드 - ..
Interface List 공식 문서 https://docs.oracle.com/javase/8/docs/api/java/util/List.html List List는 Array(배열)와 비슷한 자료구조이다. 그런데 배열에는 몇 가지 단점들이 있다. 배열은 미리 크기를 지정하여 그 공간을 확보해 놓고 사용해야 하고, 그 크기를 변경할 수 없다. 이 크기를 조절할 수 없는 것이 가장 큰 단점이다. 그래서 List를 사용한다. List는 생성할 때 크기를 지정하지 않고, 값이 추가될 때마다 List의 크기가 커진다. LinkedList와 ArrayList List는 일반적으로 LinkedList, ArrayList를 사용한다. LinkedList와 ArrayList는 구조적으로 차이가 있다. 우선 Linke..
트라이(Trie) 트라이는 문자열을 저장하고, 빠르게 탐색하기 위한 트리 형태의 자료구조이다. 문자열 저장을 위한 메모리를 사용하지만, 탐색속도가 매우 빠르다. O(N) (Java에서 Queue,Stack,List와 다르게 Trie를 직접적으로 구현해놓은 라이브러리는 없다.) 트라이의 형태 Trie에 들어있는 문자열 apple, april bus, busy, beer, best 트라이의 구조(특징) 루트 노드 루트노드는 항상 비어있다. 루트노드의 자식노드는 각 단어들의 첫 글자들이다. endOfWord 표시 파란색으로 칠해져 있는 노드는 각 문자열의 마지막 글자이다. 각 노드 구성 각 노드의 자식노드들을 Map에 저장한다. 해당 노드가 단어의 마지막을 뜻하는 endOfWord를 저장할 boolean형 필..
개발자란? 개발자는 보통 소프트웨어 개발자(Software Developer)를 말한다. 아직 현업에서 일해보지 않았기 때문에 지금 당장은 어디서 주워들은 지식으로 아래 5개의 분야만 떠오른다. 프런트엔드 : 서비스에서 눈에 보이는 화면을 만드는 분야 백엔드 : 서비스에서 눈에 보이지 않는 부분에서 여러 가지 정보를 처리하는 분야 (아래 3개는 사실 잘 모른다.) Data Engineer : 데이터를 다루거나, 빅데이터를 이용해 머신러닝, 딥러닝, 인공지능 등을 다루는 분야 임베디드 : 하드웨어와 가까운 운영체제나, 실제 사용하는 기계(전자레인지) 등을 동작하게 하는 분야..? 보안 : 정보 보호의 관점에서 정보유출을 막는 방법을 연구하여 코드를 짜는 분야..? 이외에도 수많은 분야들이 있는 것으로 알고..
우선순위 큐(Priority Queue)우선순위 큐는 Queue와 비슷하지만, 선입선출 구조인 Queue와 달리 Queue에 들어있는 자료 중 우선순위를 설정하여우선순위가 높은 순서대로 데이터를 꺼내는 구조이다.큐에 들어오는 모든 데이터에 우선순위가 존재하며, 데이터를 꺼낼 때 우선순위가 높은 순서대로 나온다.우선순위가 같은 경우에는 선입선출 방식을 따른다.자바의 우선순위 큐는 힙(Heap) 방식으로 구현되어 있다. 아래 링크에 Heap에 대해 정리해 두었으니 확인하길 바란다.2023.06.11 - [자료구조] - [JAVA/자료구조] 힙(Heap), 최소 힙(Min Heap), 최대 힙(Max Heap)우선순위 지정PriorityQueue는 생성할 때 우선순위를 지정해주어야 한다.자바에서 지원하는 기본..
Comparator와 Comparable 두가지 모두 두개의 객체를 비교하기 위한 인터페이스 이다. Comparator의 compare() 메서드는 두 매개변수 객체를 비교하고, Comparable의 compareTo() 메서드는 자기자신과 매개변수 객체를 비교한다. 객체 o1, o2가 있을 때 , compare(o1, o2) / o1.compareTo(o2) 가 가능할 것이다. 이때, return 값에 따라 o1과 o2의 위치가 결정된다. return 1 (양수) : 위치를 변경하지 않음. 즉, o1이 o2보다 앞쪽에 위치하도록 결정 return -1(음수) : 위치를 변경함. 즉, o1이 o2의 뒤에 위치하도록 결정 return 0 : return1과 비슷하거나 같음. 위치를 변경하지 않음 publi..
HashSet이란? HashSet은 Set 인터페이스를 구현한 클래스이며, 기초수학에서 집합과 같은 개념이다. 특이하게 합집합, 차집합, 교집합 등의 연산을 할 수 있다. List와 차이점은 중복을 허용하지 않는다는 점과, 인덱스(index)로 데이터를 다루지 않는다는 점이 있다. 가장 중요한 것은 역시 중복을 허용하지 않는다는 점인것 같다. HashSet 생성자 Set 인터페이스를 구현한 클래스이니 Set 형으로 선언해 줄 수 있다. 제네릭을 이용하여 데이터타입을 정의해주는 것이 좋다. HashSet set = new HashSet(); Set set = new HashSet(); 생성할 때 배열을 List로 변환하여 넣어주거나, List를 넣어서 생성할 수도 있다. Set setA = new Hash..