(12) Properties
·
자바/컬렉션 프레임워크
1. Properties에 대한 기본 개념 - Propertie는 HashTable을 상속받아 구현한 것이다. - HashTable은 키와 값을 (Object, Object)로 받는 반면, Properties는 (String, String)으로 저장한다. - 주로 애플리케이션의 환경설정과 관련된 속성을 저장하는데 사용되며 데이터를 파일로부터 읽고 쓰는 편리한 기능을 한다. - 보다 자세한 메서드의 내용은 658p를 참고한다. 2. Properties을 이해하기 위한 예제(1) : 기본적으로 키와 값을 저장하고 매서드를 이용하여 출력해보는 예제이다. ( 23번째 줄을 보면 "koo"가 없으면 "80"을 넣는 것인데, 마지막에 출력해보면 "koo"가 저장되지 않은 것을 볼 수 있다. ) ( 여기서 Itera..
(11) - TreeMap
·
자바/컬렉션 프레임워크
1. TreeMap에 대한 기본 개념 - 이진검색트리의 형태로 키와 값의 쌍으로 이루어진 데이터를 저장하므로, 검색과 정렬에 적합한 컬렉션 클래스이다. - HashMap과 검색 성능 비교는 떨어지지만 범위 검색이나 정렬이 필요한 경우 TreeMap이 유리하다. - TreeMap의 자세한 메서드들은 654p를 참고하자. 2. TreeMap을 이해하기 위한 예제(1) : (10) HashMap과 Hashtable (tistory.com)의 예제(4)을 TreeMap을 이용해서 구현하고 Comparator를 이용하여 정렬하기.
(10) HashMap과 Hashtable
·
자바/컬렉션 프레임워크
1. HashMap과 Hashtable의 관계 - 이 둘의 관계는 ArrayList와 Vector와의 관계가 같아서 새로운 버전인 HashMap을 사용할 것을 권장한다. 2. HashMap 개념 - Map의 특징상 키와 값을 묶어서 하나의 entry(데이터)로 저장하는 특징을 가진다. - 또한 해싱을 사용하기 때문에 많은 양의 entry를 검색하는데 있어서 뛰어난 성능을 가진다. - HashMap은 Entry라는 내부 클래스를 정의하고, 다시 Entry타입의 배열을 선언한다. ( 여기서 Entry 내부 클래스를 정의하는 이유는 key와 value는 연관있는 entry로 보기 때문에 각각의 배열보다는 하나의 클래스로 정의해서 하나의 배열로 다루는 것이 데이터의 integrity 측면에서 더 바람직하기 때문..
(9) TreeSet
·
자바/컬렉션 프레임워크
1. TreeSet에 대한 기본 개념 - 이진 검색 트리의 자료구조 형태로 데이터를 저장하는 컬렉션 클래스이다. - 이진 검색 트리의 특성상 정렬, 검색, 범위 검색에 높은 성능을 가지고 있으며, TreeSet은 이 자료구조의 성능을 향상시킨 '레드-블랙 트리'로 구현되어 있다. - 구조는 트리이기 때문에 데이터를 순차적으로 저장하는 것이 아닌 저장위치를 찾아서 저장해야 하고, 삭제하는 경우 트리의 일부를 재구성해야하므로 링크드 리스트보다 데이터 추가/삭제하는 것이 느리다. - 그러나 정렬된 상태를 저장하기 때문에 단일 값 검색과 범위 검색이 매우 빠르다. - 메서드에 대한 자세한 내용은 자바의 정석 640p를 참고한다. ( 위 그림은 이진 검색 트리의 구조를 보여주며 맨 위의 노드는 '부모 노드', 왼..
(8) HashSet
·
자바/컬렉션 프레임워크
1. HashSet의 기본 개념 - Set 인터페이스를 구현한 가장 대표적인 컬렉션이며, 기본적으로 중복된 요소를 저장하지 않고 저장순서 또한 유지하지 않는다. - 만약 중복된 요소를 추가한다면, false를 반환하게 된다. - 만약 저장순서를 유지하고 싶다면, LinkedHashSet을 사용한다. - HashSet 메서드의 상세한 내용은 자바의 정석 631p를 참고한다. 1-1. HashSet을 이해하기 위한 예제(1) : HashSet의 중복을 확인하는 예제이다. 1-2. HashSet을 이해하기 위한 예제(2) : 6자리 로또 번호 랜덤 생성하는 예제이다. 1-3. HashSet을 이해하기 위한 예제(3) : 6자리 로또 번호 랜덤 생성하는 예제이다. ( 정렬 기준은 set에 저장된 Integer ..
(7) Comparator와 Comparable
·
자바/컬렉션 프레임워크
1. Comparator와 Comparable - Arrays.sort()는 Character 클래스의 Comparable의 구현에 의해 정렬된 것이다. - Comparable을 구현하는 클래스는 같은 타입의 인스턴스끼리 서로 비교할 수 있는 클래스들인 Integer와 wrapper, String, Date, File 같은 것들이며 기본적으로 오름차순으로 구현되어 있다. - 아래의 코드는 Comparator와 Comparable의 인터페이스 구조이다. ( Comparator는 java.util 패키지에 있고, Comparable은 java.lang 패키지에 있다. ) - 만약 오름차순이 아닌 내림차순과 같은 새로운 기준에 의해서 정렬되고 싶다면, Comparator를 사용한다. 1-1. Comparato..
(6) Arrays
·
자바/컬렉션 프레임워크
1. Arrays 클래스의 메서드들 (1) copyOf(), copyOfRange() (2) fill(), setAll() (3) sort(), binarySearch() ( binarySearch()는 꼭 정렬된 배열만 수행할 수 있으며, 정렬되지 않았다면 잘못된 결과를 전달한다. ) (4) deepEquals(), deepToString() : 각각 다차원 배열을 다룰 때 사용되는 메서드이다. (5) asList(Object... a) ( 그냥 list에 Arrays.asList를 한다면 add가 불가능하다. )
(5) Iterator, ListIterator, Enumeration
·
자바/컬렉션 프레임워크
1. Iterator - 컬렉션 프레임웍에서는 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화하였다. 그것은 바로 각 요소에 접근할 수 있느 기능을 가진 Iterator 인터페이스이다. - Collection 인터페이스에 정의된 메서드이므로, List와 Set에도 Iterator가 포함되어 있다. - 메서드 종류는 아래와 같다. (1) bollean hasNext() (2) Object next() (3) void remove() : next()로 읽어야만 remove()를 사용할 수 있다.. - Map 인터페이스를 구현한 컬렉션 클래스는 키와 값을 iterator()로 불러올 수 없지만, 따로 키값을 가져오는 keySet()이나 entrySet()을 불러와야 한다. 1-1. Iterator를 이해하기 ..
(4) Stack과 Queue
·
자바/컬렉션 프레임워크
1. Stack과 Queue - Stack은 LIFO(Last In First Out)이고, Queue는 FIFO(First In First Out)이다. - Stack은 ArrayList로, Queue는 LinkedList로 구현하는 것이 좋다. Queue 또한 ArrayList로 구현해도 되지만 데이터 삭제를 할 때 공간을 다시 채워주어야 하기 때문에, LinkedList가 유리하다. - Stack의 메서드는 아래와 같다. ( 중요한 부분만 적었다. 상세한 내용은 자바의 정석 604p를 참고하자. ) (1) Object peek() : Stack의 맨 위에 있는 저장된 객체를 반환한다. pop()과 달리 객체를 꺼내지는 않음 ( 만약 비어있다면, EmptyStackException 발생 ) (2) O..
(3) LinkedList
·
자바/컬렉션 프레임워크
1. LinkedList - 배열은 자료구조가 간단하며 사용하기 쉽고 읽어오는데 걸리는 시간이 가장 빠르다는 장점이 있다. - 그러나 배열은 단점 또한 존재하는데 아래와 같다. (1) 크기를 변경할 수 없다. : 변경할 수 없으므로 새로운 배열을 생성해야 한다. : 또한 크게 생성하면 메모리 낭비가 있다. (2) 비순차적인 데이터의 추가 또는 삭제에 시간이 많이 걸린다. : 차례대로 추가하거나 뒤에서 데이터를 삭제하는 것은 빠르지만, 중간에 데이터를 추가한다면, 다른 데이터들을 복사해서 옮겨야 된다. - 위와 같은 단점들을 보완하기 위해서 링크드 리스트가 등장하게 되었다. - 배열은 연속적이지만, 링크드 리스트는 불연속적으로 구성되어 있다. - 위 그림처럼 링크드 리스트는 클래스 안에 2개의 속성을 가져..
(2) ArrayList
·
자바/컬렉션 프레임워크
1. ArrayList - ArrayList는 기존의 Vector를 개선한 것으로 구현원리와 기능적인 측면에서 동일하다. - Object 배열을 이용해서 데이터를 순차적으로 저장하며, 공간이 없다면 더 큰 새로운 배열을 만들어서 복사하여 저장한다. - 자세한 메서드 종류는 자바의 정석 584~585를 참고한다. 1-1. ArrayList를 이해하기 위한 예제(1) : 추가, 제거, 포함 등의 메서드를 이용하는 예제이다. 1-2 ArrayList를 이해하기 위한 예제(2) : 43개의 문자열을 10개씩 자르고 List 객체에 넣어주는 예제이다. 1-3. ArrayList를 이해하기 위한 예제(3) : Vector 클래스를 알아보는 예제이다. ( trimToSize() 호출은 새로운 인스턴스를 생성해서 반환..
(1) 컬렉션 프레임웍이란?
·
자바/컬렉션 프레임워크
1. 컬렉션 프레임웍이란? - 데이터 군(group)을 저장하는 클래스들을 표준화한 설계를 뜻한다. - 컬렉션은 다수의 데이터, 즉 데이터 그룹을, 프레임웍은 표준화된 프로그래밍 방식을 의미한다. - Vector, Hashtable, Properties와 같은 클래스를 컬렉션 클래스라고 부르며, 원래는 JDK1.2 이전에는 서로 다른 각자의 방식으로 처리해야 했으나, 프레임웍이 등장 이후로는 표준화된 방식으로 다룰 수 있도록 체계화되었다. 1-1. 컬렉션 프레임웍의 핵심 인터페이스 - 아래의 그림처럼 컬렉션 프레임웍에서는 컬렉션 데이터 그룹을 크게 3가지 타입이 존재하는데, List와 Set의 공통된 부분을 다시 뽑아서 새로운 인터페이스인 Collection을 추가 정의하였다. - List, Set, M..