컬렉션 프레임워크 - Map, Stack, Queue
·
Java
컬렉션 프레임워크 - Map (1) Map은 key, value의 쌍을 저장하는 자료 구조이다.key는 중복될 수 없지만 value는 중복이 가능하다.Map은 순서를 유지하지 않는다.  자바는 HashMap, TreeMap, LinkedHashMap등 다양한 구현체를 제공한다.Map 인터페이스의 주요 메서드는 다음과 같다. 위 구현체들 중 HashMap을 가장 많이 사용한다. Hash구조의 장점은 이전에 계속 언급했기 때문에 설명은 생략 package collection.map;import java.util.Collection;import java.util.HashMap;import java.util.Map;import java.util.Set;public class MapMain1 { public..
컬렉션 프레임워크 - HashSet
·
Java
HashSet 직접 구현package collection.set;import java.util.Arrays;import java.util.LinkedList;public class MyHashSetV1 { static final int DEFAULT_INITIAL_CAPACITY = 16; LinkedList[] buckets; private int size = 0; private int capacity = DEFAULT_INITIAL_CAPACITY; public MyHashSetV1() { initBuckets(); } public MyHashSetV1(int capacity) { this.capacity = capacity; ..
컬렉션 프레임워크 - 해시(Hash)
·
Java
List vs Set List- 순서 유지 : 리스트에 추가된 요소는 특정한 순서를 유지한다.- 중복 허용 : 동일한 값이나 객체의 중복을 허용한다.- 인덱스 접근 : 각 요소는 인덱스를 통해 접근할 수 있다.순서가 중요하거나 중복된 요소를 허용해야할 경우에 사용한다. Set유일한 요소들의 컬렉션이다.- 유일성 : 중복을 허용하지 않는다. 이미 중복된 요소라면 무시된다.- 순서 미보장 : Set 구현에선 순서를 보장하지 않는다. 출력 시 입력 순서와 다를 수 있음- 빠른 검색 : 요소의 유무를 빠르게 확인할 수 있도록 최적화되어있다. 이는 데이터 중복을 방지, 빠른 조회 가능하게 한다.중복을 허용하지않고, 요소의 유무만 중요한 경우에 사용한다. Set 구현 Set을 구현하는 것은 단순하다. 인덱스가 없기..
컬렉션 프레임워크 - List
·
Java
리스트 추상화 - 인터페이스 도입다형성과 OCP 원칙을 가장 잘 활용할 수 있는 곳 중 하나가 자료구조 이다. List 자료구조 순서가 있고 중복을 허용하는 자료 구조를 List라고 한다. 우리가 이전에 만든 MyArrayList와 MylinkedList는 내부 구현만 다를 뿐 같은 기능을 제공하는 리스트이다.내부 구현이 다르기에 성능은 다를 수 있지만 핵심은 같은 기능을 제공하는 것이다.이 둘의 공통 기능을 인터페이스로 추상화 한다면 다형성을 활용한 다양한 이득을 얻을 수 있다. package collection.list;public interface MyList { int size(); void add(E e); void add(int index, E e); E get(int i..
컬렉션 프레임워크 - LinkedList
·
Java
노드와 연결 (1)이전에 배웠던 ArrayList는 내부에 배열을 사용해 데이터를 보관하고 관리한다. 이로인해 발생하는 단점은배열을 미리 확보해야하기 때문에 사용하지 않는 공간을 낭비하게 된다.중간에 데이터를 추가한다면 공간을 확보하기 위해 데이터를 한칸씩 이동해야하는 문제가 발생하며이 방법은 성능이 좋지 않은 방법이다. 낭비되지 않는 메모리 없이 필요한만큼 메모리를 확보해서 사용하고, 데이터를 추가하거나 삭제할 때효율적으로 사용할 수 있는 자료구조가 있는데, 노드를 만들고 각 노드를 서로 연결하는 방식이다. public class Node { Object item; Node next; public Node(Object item) { this.item = item; }}..
컬렉션 프레임워크 - ArrayList
·
Java
배열과 인덱스배열과 같이 여러 데이터(자료)를 구조화해서 다루는 것을 자료구조라고 한다.자바는 배열 뿐 아니라 컬렉션 프레임워크라는 다양한 자료구조를 제공한다.그 전에 먼저 기본이 되는 자료구조인 배열의 특징에 대해서 알아보자public class ArrayMain1 { public static void main(String[] args) { int[] arr = new int[5]; System.out.println("==index 입력: 0(1)=="); arr[0] = 1; arr[1] = 2; arr[2] = 3; System.out.println(Arrays.toString(arr)); // index ..