JAVA/컬렉션 프레임워크
-
HashMapJAVA/컬렉션 프레임워크 2023. 8. 4. 16:30
HashMap은 map을 구현했으므로 map의 특징을 가지고 있다. 키(key)와 값(value)을 묶어서 하나의 객체로 데이터를 저장하고 해싱(hashing)을 사용하기 때문에 많은 양의 데이터를 효율적으로 검색할 수 있다는 장점이 있다. 키(key) : 컬렉션 내의 키(key) 중에서 유일해야 함 값(value) : 키(key)와 달리 중복도 허용 public class Main { public static void main(String[] args) { HashMap map = new HashMap(); map.put("myId", "1234"); map.put("asdf", "1111"); map.put("asdf", "1234"); Scanner s = new Scanner(System.in);..
-
TreeSetJAVA/컬렉션 프레임워크 2023. 8. 3. 22:47
이진 검색 트리는 루트에서 시작해서 2개의 부모를 가지는 자료구조이다. 루트가 아닌 노드는 부모 노드와 left, right라는 2개의 자식 노드를 가지게 된다. 이진 검색 트리의 특징 모든 노드는 최대 2개의 자식 노드를 가질 수 있다. 왼쪽 자식노드의 값은 부모노드의 값보다 작고 오른쪽 자식노드의 값은 부모노드의 값보다 커야한다. 노드의 추가 삭제에 시간이 걸린다. -> 순차적으로 저장하지 않기 때문에 검색과 정렬기능이 배열이나 링크드 리스트에 비해 뛰어나다. 중복된 값을 저장하지 못한다. 자바에서 제공하는 Treeset은 저장할 때 이미 정렬하기 때문에 값을 읽을 때 별도의 정렬을 할 필요가 없다. public class Main { public static void main(String[] arg..
-
HashSetJAVA/컬렉션 프레임워크 2023. 8. 3. 22:25
Set 인터페이스를 구현한 가장 대표적인 컬렉션 HashSet은 중복된 요소를 저장하지 않는다. HashSet에서 중요한 것은 hashCode를 이용한다는 것이다. public class Main { public static void main(String[] args) { HashSet set = new HashSet(); set.add("aaa"); set.add("aaa"); set.add(new Person("Kim", 20)); set.add(new Person("Kim", 20)); System.out.println(set); } static class Person { String name; int age; Person (String name, int age) { this.name = name;..
-
Stack, Queue (Priority Queue와 deque 포함)JAVA/컬렉션 프레임워크 2023. 8. 3. 15:16
스택은 마지막에 저장한 데이터를 가장 먼저 꺼낼 수 있는 LIFO 방식이다. LIFO (Last In First Out) 큐는 처음에 저장한 데이터를 가장 먼저 꺼내는 FIFO 방식이다. FIFO (First In First Out) 예를 들어 데이터 0, 1, 2를 넣었다면 스택으로 꺼낼 때에는 2, 1, 0 순으로 꺼내게 되고 큐로 꺼낼 때에는 0, 1, 2 순서로 꺼내게 된다. Stack과 Queue의 데이터 저장, 뽑기 예제 public class Main { public static void main(String[] args) { Stack st = new Stack(); Queue q = new LinkedList(); st.push("0"); st.push("1"); st.push("2");..
-
ArrayList와 LinkedListJAVA/컬렉션 프레임워크 2023. 8. 3. 13:55
ArrayList와 LinkedList는 자바에서 가장 많이 사용하는 배열의 형태이다. ArrayList : 데이터의 저장순서가 유지되고 중복을 허용함. LinkedList : 링크드 리스트는 불연속적으로 존재하는 데이터들의 주소값들을 연결한 형태로 구현됨. 데이터의 삭제 - ArrayList 삭제한 후 데이터들을 다시 연결하기 위해 한 칸씩 당기는 작업이 필요 만약에 0 1 2 3 4라는 배열에서 2이라는 값이 사라진다면 0 1 3 4의 순서를 맞추기 위해 arr[3], arr[4]를 arr[2], arr[3]으로 이동시키는 작업이 필요 실제로 System.arrycopy(data, index+1, data, index, size-index-1) 라는 로직이 ArrayList에서 작동됨 위의 예제에서는..