컬렉션 프레임워크 - 해시(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 ..
제네릭 (2)
·
Java
제네릭을 도입하지 않은 예제 동물병원을 만드는데, 개 병원은 개만, 고양이 병원은 고양이만 받을 수 있어야 한다.public class CatHospital { private Cat animal; public void set(Cat animal) { this.animal = animal; } public void checkUp() { System.out.println("동물 이름: " + animal.getName()); System.out.println("동물 이름: " + animal.getSize()); animal.sound(); } public Cat bigger(Cat target) { return ..
제네릭 (1)
·
Java
제네릭이 필요한 이유public class IntegerBox { private Integer value; public void set(Integer value) { this.value = value; } public Integer get() { return value; }}public class StringBox { private String value; public String get() { return value; } public void set(String value) { this.value = value; }} 숫자, 문자열을 보관하고 꺼낼 수 있는 단순한 클래스이다.package mid2.g..