본문 바로가기

Programming/JAVA

(102)
컬렉션 프레임워크(5) - 검색 강화 컬렉션 2 : TreeSet 이제 앞서서 살펴본 기본 이진트리(binary tree)를 기반으로 한 Set 컬렉션인 TreeSet을 살펴보도록 하겠습니다. TreeSet에서 기본적으로 하나의 노드는, 노드 값인 value 그리고 왼쪽/오른쪽 자식 노드 참조를 위한 두 개의 변수로 구성됩니다. 이 TreeSet에 객체를 저장하게 되면 정렬은 자동으로 진행되는데, 이진트리 개념에서 배운 것처럼 부모 값보다 낮은 것은 왼쪽 자식 노드에, 높은 것은 오른쪽 자식 노드에 저장하게 됩니다. 본격적으로 들어가기 앞서 기억이 잘 나지 않는다면 Set 개념도 다시 한번 복습해 보겠습니다. 컬렉션 프레임워크(3) - Set 컬렉션 1 : Set의 개념 List와 차별화되는 Set 컬렉션의 가장 큰 특징은, 수학의 집합과 유사한 성질을 갖는다는 것입니..
컬렉션 프레임워크(5) - 검색 강화 컬렉션 1 : 이진트리 구조 검색 기능을 강화한 컬렉션 프레임워크는 대표적으로 TreeSet과 TreeMap이 존재합니다. 당연히 각각 Set 컬렉션, Map 컬렉션이겠죠? 그런데 이 두 개의 컬렉션 프레임워크를 알아보기 전에 이진트리 구조(binary tree)를 이해해야 합니다. 왜냐하면 이 컬렉션들의 구조 자체가 이 이진트리를 이용해 계층적 구조(tree architecture)를 형성하기 때문입니다. ○ 이진 트리 구조 그럼 기본적으로 이 '이진트리 구조'가 무엇을 의미하는지부터 살펴보겠습니다. 이 이진트리 구조에 대한 이해가 있어야지 우리가 앞으로 살펴볼 TreeSet과 TreeMap과 같은 컬렉션이 왜 "검색 기능이 강화된 컬렉션"인지를 이해할 수 있기 때문이죠. 이진트리 구조는 여러 개의 노드(node)가 트리 모양으로..
컬렉션 프레임워크(4) - Map 컬렉션 4 : Properties Properties는 Hashtable의 하위 클래스이기 때문에, Hashtable의 모든 특징을 그대로 가지고 있습니다. 다만, 차이점은 key와 value를 String 타입으로 제한한다는 점 입니다. ㅇ그렇기 때문에 Properties는 애플리케이션 옵션 / DB 연결 정보 / 다국어 정보가 저장된 프로퍼티 파일(~.properties) 파일을 읽을 때 사용하게 됩니다. 그럼 여기서 말하는 프로퍼티 파일이란 무엇일까요? 프로퍼티 파일은 key와 value가 = 기호로 연결된 텍스트 파일입니다. 이는 ISO 8859-1 문제셋으로 저장하게 되죠. 그런데, 한글은 해당 문자셋으로 직접 표현이 불가합니다. 그래서 한글은 유니코드로 변한하여 저장하게 되죠. 예를 들어 아래와 같이 country와 langu..
컬렉션 프레임워크(4) - Map 컬렉션 3 : Hashtable 사실 Hashtable은 HashMap과 동일한 내부 구조를 갖습니다. 그래서 이 역시 key로 사용할 객체는 hashCode( ), equals( ) 메서드 오버라이드를 통해 동등한 객체가 될 조건을 구성해야 합니다. 그럼 Hashtable과 HashMap의 근본적인 차이는 무엇일까요? Hashtable은 동기화(synchronized) 메서드로 구성되어 있습니다. 그래서 멀티 스레드 상에서 동시에 메서드 실행이 불가능하고, 하나의 스레드가 완료된 후에야 다른 스레드를 실행할 수 있습니다. 그래서 멀티 스레드를 사용하는 환경에서 객체와 관련된 삭제, 추가 작업이 안전합니다. 이를 두고 스레드가 안전(thread safe)라고 표현합니다. Map 인터페이스의 구현 클래스인 Hashtable의 생성 방법은..
컬렉션 프레임워크(4) - Map 컬렉션 2 : HashMap[2/2] 앞서서 살펴본 예제를 이어서 진행해 보겠습니다. 컬렉션 프레임워크(4) - Map 컬렉션 2 : HashMap[1/2] HashMap은 Map의 인터페이스를 구현하는 대표적인 Map 컬렉션입니다. HashMap에서 키로 사용할 객체는, hashCode( )와 equals( ) 메서드를 오버라이드 하여 동등 객체가 되는 조건을 정해야 합니다. 쉽게 설 nozeroslope.tistory.com import java.util.*; public class ExampleMain { public static void main(String[] args) { // Map 컬렉션의 생성 Map map = new HashMap(); // 객체 저장(중복 key 사용) map.put("SWINGS", 90); map.pu..
컬렉션 프레임워크(4) - Map 컬렉션 2 : HashMap[1/2] HashMap은 Map의 인터페이스를 구현하는 대표적인 Map 컬렉션입니다. HashMap에서 키로 사용할 객체는, hashCode( )와 equals( ) 메서드를 오버라이드 하여 동등 객체가 되는 조건을 정해야 합니다. 쉽게 설명하자면, 키는 유니크 값이기 때문에 중복으로 존재할 수 없기 때문이죠. 키가 같다면 이는 동일한 Entry로 취급해야 하기 때문입니다. 같은 객체로 판단하는 프로세스는 다음과 같습니다. 1. 우선, hashCode( )의 리턴 값이 같으면 equals( )의 리턴 값을 점검합니다. > 만일 hashCode( )의 리턴 값이 다르면 이는 즉시 다른 키로 인식합니다. 2. equals( )의 리턴 값까지 true라면, 이는 같은 키로 판정을 완료합니다. > 만일 false가 리턴..
컬렉션 프레임워크(4) - Map 컬렉션 1 : Map의 개념[2/2] 앞서서 Map에서의 간단한 공통 인터페이스 메서드를 살펴보았습니다. 컬렉션 프레임워크(4) - Map 컬렉션 1 : Map의 개념[1/2] 이번에는 Map 컬렉션에 대해서 살펴보겠습니다. Map 컬렉션은 키(key)와 값(value)으로 구성된 Entry 객체를 저장하는 구조입니다. 중요한 특성 중 하나는, key는 중복 저장할 수 없으며 value는 중복 저 nozeroslope.tistory.com 우리가 어떤 객체의 키를 이미 알고 있다면, get( ) 메서드를 이용해 간단하게 객체를 찾아올 수 있습니다. 하지만 저장된 전체 객체를 하나씩 얻어서 처리하려는 경우에는 두 가지 방법을 사용할 수 있습니다. 1. keySet( ) 메서드 사용 2. entrySet( ) 메서드 사용 각각의 방법을 살펴보겠..
컬렉션 프레임워크(4) - Map 컬렉션 1 : Map의 개념[1/2] 이번에는 Map 컬렉션에 대해서 살펴보겠습니다. Map 컬렉션은 키(key)와 값(value)으로 구성된 Entry 객체를 저장하는 구조입니다. 중요한 특성 중 하나는, key는 중복 저장할 수 없으며 value는 중복 저장이 가능하다는 점입니다. - 만일 기존 키와 동일한 key로 특정 value를 저장하게 되면 기존의 value는 없어지고, 새로운 value로 대치하게 됩니다. Map 컬렉션에는 HashMap, Hashtable, LinkedHashMap, Properties, TreeMap 등이 있는데 여기서는 우선 Map 컬렉션에서 공통으로 사용되는 Map 인터페이스의 메서드를 확인해 보겠습니다. Map 컬렉션은 Key를 통해서 객체를 호출하고 관리하는 경우가 많기 때문에, 키를 파라미터 값으로 ..