본문 바로가기

Java의 정석/컬렉션 프레임워크16

Collections 컬렉션 클래스 Collections - 컬렉션을 위한 메서드 (static == 정적 메서드 == 클래스 메서드) 를 제공 한다. 대표적인 static 메서드를 지니고 있는 클래스는 Objects / Arrays / Collections 이다. Objects 클래스는 객체를 다룰 때 사용 하는 클래스 이다. Arrays 클래스는 배열을 다룰 때 사용 하는 클래스 이다. Collections 클래스는 컬렉션을 다룰 때 사용 하는 클래스 이다. 1. 컬렉션 채우기, 복사, 정렬, 검색 >> fill(), copy(), sort(), binarySearch(), .. 등등 2. 컬렉션의 동기화 >> synchronizedXXX() static Collections synchronizedCollection(Collection.. 2023. 10. 10.
TreeSet (2) 11 - 42 ~ 45 TreeSet (2) 11 - 42 TreeSet - 주요 생성자와 메서드 컬렉션 (Collection) 인터페이스에 존재하는 메서드인 add() 라던지 size() 라던지 remove() 라던지 isEmpty() 라던지 iterator() 라던지 이런 메서드들은 모든 컬렉션 인터페이스를 상속받은 컬렉션 프레임워크 인터페이스에 존재하는 메서드 이므로 공통의 메서드를 제외 하고 TreeSet 클래스 가 가지고 있는 메서드를 정리 해보려 한다. 1) 맨 위의 3개의 메서드는 생성자 이다. TreeSet(Comparator comp) 생성자의 인자는 비교 기준을 제공 해주는 것을 의미 한다. 만약에 비교 기준 대상이 존재 하지 않으면, 저장 하는 객체의 Comparable 을 사용 해야.. 2023. 10. 9.
TreeSet (1) 11 - 39 TreeSet >> 범위 탐색 / 정렬 - 이진 탐색 트리 (binary search tree) 로 구현. 범위 탐색 ( from ~ to ) & 정렬에 유리 하다. - 이진 트리는 모든 노드가 최대 2개의 하위 노드를 갖는다. 각 요소 (node) 가 나무 (tree) 형태로 연결 되어 있다 (LinkedList 의 변형) 최대 2개라는 의미는 0개 부터 2개 까지의 하위 노드를 가질 수 있다는 것을 의미 한다. 이진 트리에서 첫번 째 요소를 루트 == root 라고 한다. 위의 이미지를 보면, 루트의 자식으로는 2개가 있다. 또 A의 자식으로 하위 자식이 2개가 있다. B와 C의 부모는 A가 된다. 각각의 요소 하나 하나를 "노드" 라고 한다. >> 각 "노드" 가 부모와 자식 관계로 .. 2023. 10. 9.
HashSet (2) ch11-37 ~ 38 HashSet (2) 11 - 37 HashSet - 예제 - HashSet 은 객체를 저장 하기 전에 기존에 같은 객체가 있는지를 확인 한다. 같은 객체가 없으면 저장 하고, 있으면 저장 하지 않는다. - boolean add(Object o) 메서드는 저장할 객체의 equals() 메서드 와 hashCode() 메서드를 호출 한다. 즉, Set에 저장 할 때 add() 메서드를 사용 할텐데, 이때 저장하는 객체를 위의 메서드를 자동 호출 해서 중복 되는 객체가 있는지 없는지를 확인 한다. 하지만, equals() 메서드와 hashCode() 메서드가 오버라이딩 되어 있어야 정상적으로 확인 할 수 있다. 그동안, equals() 메서드만 오버라이딩 해서 사용 했었는데, 원래 정석.. 2023. 10. 9.
HashSet (1) ch11-34 ~ 36 HashSet (1) 11 - 34 HashSet - 순서 X, 중복 X Set 인터페이스를 구현한 대표 클래스는 HashSet 과 TreeSet 이다. 보통 Set을 사용 해야 한다면 HashSet 클래스를 사용 하면 된다. - Set 인터페이스를 구현한 대표적인 컬렉션 클래스 이다. - 순서를 유지하려면 LinkedHashSet 클래스를 사용 하면 된다. - TreeSet 이란 ? >> 범위 검색과 정렬에 유리한 컬렉션 클래스 이다. 범위 ? >> from ~ to 예) 10 ~ 20 하지만, TreeSet은 HashSet 보다는 데이터 추가 또는 삭제에 시간이 더 걸린다는 단점이 있다. 11 - 34 HashSet - 주요 메서드 첫번째는 기본 생성자 이다. 두번째는 지정된 .. 2023. 9. 20.
Comparator & Comparable ch11-30 ~ 33 Comparator & Comparable ch11 - 30 Comparator & Comparable - 객체 정렬에 필요한 메서드 (정렬 기준 제공이 목적) 를 정의한 인터페이스 이다. Comparable : 기본 정렬 기준을 구현 하는데 사용 한다. Comparator : 기본 정렬 기준 외에 다른 기준으로 정렬하고자 할 때 사용 한다. 아래의 이미지는 다음과 같다. 인터페이스 내부의 compare() 또는 compareTo() 메서드를 사용 하면, 반환값이 양수 또는 0 또는 음수가 나오게 된다. 왼쪽이 크면 양수 왼쪽과 오른쪽이 같으면 0 오른쪽이 크면 음수 를 반환 하게 된다. compare() 메서드는 두 객체를 비교 하는 메서드 이고, compareTo() 메서드는 .. 2023. 9. 20.
Arrays 클래스 ch11 - 25 ~ 29 Arrays 클래스 ch11 - 25 Arrays (1 / 4) - 배열을 다루기 편리한 메서드 (static) 제공 static 메서드가 제공되는 클래스의 예시는 아래와 같다. Math 클래스 Object 클래스 Collections 클래스 .. 1. 배열의 출력 - toString() 메서드의 인자로 배열을 넣으면 배열의 데이터를 문자열로 반환해준다. 만약에 배열의 데이터가 {1,2,3,4,5} 였으면, [1,2,3,4,5] 의 형태로 보여 준다. toString() 메서드는 이미지와 같이 오버로딩이 되어 있다. int[] arr = {0,1,2,3,4}; System.out.println("arr = " + Arrays.toString(arr)); 이런식으로 사용 하면 된.. 2023. 9. 20.
Iterator, Enumeration / Map 과 Iterator Iterator : 반복하다 ch11 - 22 Iterator, ListIterator, Enumeration Iterator : 주로 사용 ListIterator : 양방향 읽기 가능 / 잘 사용 하지 않음 Enumeration : 구버전 컬렉션에 저장된 데이터를 접근 할 때 사용하는 인터페이스 이다. [ Iterator 인터페이스의 메서드 ] Iterator 인터페이스의 메서드 에서 핵심 메서드는 딱 두가지 이다. 1) boolean hasNext() >> 확인 (true or false 반환) 2) Object next() >> 읽기 ( 데이터 반환 (Object) ) 두가지 이다. 참고로, Enumeration 인터페이스는 구버전 이다. 구버전의 코드를 확인하는 일이 있을 수도 있으니, 이정도만 .. 2023. 9. 20.
Stack / Queue (스택 / 큐) ch11 - 15 스택과 큐 (Stack & Queue) 스택 (Stack) : LIFO 구조. 마지막에 저장된 것을 제일 먼저 꺼내게 되는 구조 이다. LIFO 란 ? Last In First Out == 마지막에 넣은것을 제일 먼저 꺼낸다. 밑은 막히고, 위만 뚫린 상자 라고 생각 하면 된다. 0부터 넣었고, 1을 넣었고, 2를 마지막에 넣었다. 이것을 추출 하려면 2를 꺼내고, 1을 꺼내고, 0을 꺼내야 하는 구조 이다. 1 > 2 > 3 > 4 > 5 의 순서로 넣었다면, 5 > 4 > 3 > 2 > 1 의 순서로 꺼내야 한다는 의미 이다. 저장하는것을 push 라고 하고, 추출하는것을 pop 이라고 한다. 큐 (Queue) : FIFO 구조. 제일 먼저 저장한 것을 제일 먼저 꺼내게 된다. FI.. 2023. 9. 17.