반응형

언어(Language)/Java 95

[Java] 자바 사용자 정의 어노테이션(Custom Annotation) 개념 정리 및 활용

사용자 정의 어노테이션 (Custom Annotation) 사용자가 직접 정의하여 사용하는 어노테이션이다. 프레임워크나 API 등을 만들어 사용할 때 주로 사용한다. 사용자 정의 어노테이션 정의 사용자 정의 어노테이션을 사용하기 위해 @interface를 통해 어노테이션 클래스를 작성할 수 있다. 어노테이션은 내부에 값을 가질 수 있으며, 값을 설정할 수 있다. 값을 설정하기 위해서는 default 값 형태로 설정한다. import java.lang.annotation.*; // 메타 어노테이션을 활용하여 사용자 정의 어노테이션 선언 @Target(ElementType.TYPE) // 어노테이션 적용 대상 Type으로 설정 @Retention(RetentionPolicy.RUNTIME) // 런타임 시까..

[Java] 어노테이션(Annotation) 개념 정리 및 종류

Intro 프로그래밍에서 주석은 개발자의 입장에서 더 직관적이고 코드를 이해하기 쉽게 하며, 다른 사람에게 설명할 수 있도록 정보를 제공하는 역할이다. 어노테이션 또한 주석과 비슷한 역할을 담당한다고 할 수 있다. 즉, 주석은 사람에게 정보를 제공하는 것이라면, 어노테이션은 특정 코드를 사용하는 프로그램에게 정보를 전달한다. 어노테이션이란? (Annotation) 어노테이션은 다른 프로그램에게 유용한 정보를 제공하기 위해 사용되는 것으로 주석과 같은 의미를 가진다. 어노테이션의 역할 컴파일러에게 문법 에러를 체크하도록 정보를 제공한다. 프로그램을 빌드할 때 코드를 자동으로 생성할 수 있도록 정보를 제공한다. 런타임에 특정 기능을 실행하도록 정보를 제공한다. 어노테이션은 @를 사용하여 작성하며, 해당 타겟..

[Java] 자바 TreeMap 개념 정리 및 활용

트리맵 (TreeMap) TreeMap은 TreeSet과 동일하게 이진 탐색 트리 형태로 데이터를 저장한다. 하지만, Set 인터페이스의 특성과는 달리 Map 특성을 사용하기 때문에 키(Key)와 값(Value)으로 이루어진 Entry 객체 형태로 저장한다. 이진 탐색 트리(Binary Search Tree)는 하나의 부모 노드가 최대 두 개의 자식 노드와 연결된 형태로 데이터를 저장한 자료 구조이다. 이진 탐색 트리는 이진 트리(Binary Tree)의 일종으로 정렬과 검색에 특화된 자료 구조이다. 최상위 노드를 루트 노드라 하며 그림의 10에 해당된다. 이진 탐색 트리는 모든 왼쪽 자식의 값이 루트나 부모 노드보다 작고, 모든 오른쪽 자식의 값은 루트나 부모 노드보다 큰 값을 가지는 것이 특징이다. ..

[Java] 자바 HashTable 개념 정리 및 활용

HashTable HashTable은 HashMap과 내부 구조가 동일하며, 사용 방법 또한 매우 유사하다. HashMap과 마찬가지로 키는 중복이 안되지만, 값은 중복을 허용한다. HashTable과 HashMap의 차이점은 스레드와 관련이 있다. HashTable의 경우 병렬 프로그래밍을 지원하여 병렬 처리를 하면서 자원의 동기화를 고려해야 하는 상황일 때 사용하기 적합하다. 그 외 병렬 처리를 하지 않거나 동기화를 고려하지 않는 상황이라면 HashMap을 사용한다. 또한, HashMap은 값으로 null이 입력이 가능하지만, HashTable에서는 null 입력이 불가능하다. 다음은 HashTable의 간단한 예제이다. import java.util.*; public class HashTableEx..

[Java] 자바 HashMap 개념 정리 및 활용

해시맵 (HashMap) HashMap은 Map 인터페이스를 구현한 대표적인 클래스이다. HashMap은 키와 값으로 구성된 객체를 저장하는데, 이 객체를 Entry 객체라 한다. HashMap은 해시 함수를 통해 키와 값이 저장되는 위치를 결정한다. 사용자는 그 위치를 알 수 없고, 삽입되는 순서와 위치 또한 관계가 없다. 해시 함수를 통해 데이터를 관리하는 자료 구조로 많은 양의 데이터를 검색하는 데 있어서 뛰어난 성능을 보인다. HashMap의 개별 요소가 되는 Entry 객체는 Map 인터페이스의 내부 인터페이스인 Entry 인터페이스를 구현한다. 따라서 Map.Entry 인터페이스에는 다양한 메서드가 정의되어 있다. equals(Object o) 동일한 Entry 객체인지 비교하는 메서드로 동일..

[Java] 자바 Map<K, V> 인터페이스 개념 정리

Map Map 인터페이스는 키(Key)와 값(Value)으로 구성된 객체를 저장하는 구조이다. 키와 값으로 구성된 객체를 Entry 객체라고 한다. 즉, Map 인터페이스는 Entry 객체를 저장하는 구조이며, Entry 객체는 Key 객체와 Value 객체로 저장한다. Map을 사용할 때에 주의할 점은, 키(Key)는 중복 저장이 불가능하며, 값(Value)은 중복 저장이 가능하다. 또한 저장 순서도 유지되지 않는다. 키는 값을 식별하는 용도로 사용되기 때문이다. Map 인터페이스를 구현한 클래스는 HashMap, Hashtable, TreeMap, SortedMap 등이 있다. 다음은 Map 인터페이스를 구현한 클래스에서 공통적으로 사용 가능한 메서드이다. put(Object key, Object v..

[Java] 자바 TreeSet 개념 정리 및 활용

트리셋 (TreeSet) TreeSet은 이진 탐색 트리 형태로 데이터를 저장한다. 또한, Set 인터페이스의 특성인 데이터의 중복 저장을 허용하지 않으며, 순서 또한 유지하지 않는다. 이진 탐색 트리(Binary Search Tree)는 하나의 부모 노드가 최대 두 개의 자식 노드와 연결된 형태로 데이터를 저장한 자료 구조이다. 이진 탐색 트리는 이진트리(Binary Tree)의 일종으로 정렬과 검색에 특화된 자료 구조이다. 최상위 노드를 루트 노드라 하며 그림의 10에 해당된다. 이진 탐색 트리는 모든 왼쪽 자식의 값이 루트나 부모 노드보다 작고, 모든 오른쪽 자식의 값은 루트나 부모 노드보다 큰 값을 가지는 것이 특징이다. 따라서, TreeSet에 값을 추가하면 정렬도 함께 실시하게 된다. 이진 탐..

[Java] 자바 HashSet 개념 정리 및 활용

해시셋 (HashSet) HashSet은 Set 인터페이스를 구현한 가장 대표적인 컬렉션 클래스이다. 따라서 Set 인터페이스의 특성을 그대로 중복된 값을 허용하지 않으며, 저장 순서를 유지하지 않는다. HashSet에 값을 추가할 때, 해당 값이 중복된 값인지 아닌지 판단하는 과정 add(Object o)를 통해 객체를 저장한다. 이때, 저장하고자 하는 객체의 해시 코드를 hashCode() 메서드를 통해 얻는다. Set이 저장하고 있는 모든 객체들의 해시 코드를 hashCode() 메서드를 통해 얻는다. 저장하고자 하는 객체의 해시 코드와 Set에 이미 저장되어 있는 객체의 해시 코드를 비교한다. 만약, 같은 해시 코드를 해시 코드를 가진 객체가 존재하지 않는다면, Set에 객체가 추가되며 1번에서 ..

[Java] 자바 Set<E> 컬렉션 인터페이스 정리

Set Set는 집합을 의미한다. 즉, 중복된 값을 허용하지 않는다. 따라서 자바 컬렉션에서의 Set은 중복된 값을 허용하지 않는 데이터들의 집합을 뜻한다. Set은 요소의 중복을 허용하지 않으며, 순서 또한 유지하지 않는 컬렉션이다. Set을 구현한 클래스는 대표적으로 HashSet과 TreeSet이 있다. Set 인터페이스 메서드 Set 인터페이스에 정의된 메서드들은 다음과 같다. add(Object o) 주어진 객체를 추가하고, 성공하면 true를, 중복 객체면 false를 반환한다. contains(Object o) 주어진 객체가 Set에 존재하는지 확인한다. isEmpty() Set이 비어있는지 확인한다. iterator() 저장된 객체를 하나씩 읽어오는 Iterator를 반환한다. size()..

[Java] 자바 Iterator 개념 정리 및 활용

Iterator 이터레이터(Iterator)는 컬렉션에 저장된 요소들을 순차적으로 읽어오기 위해 사용한다. Iterator의 기능은 Iterator 인터페이스에 정의되어 있으며, Collection 인터페이스에는 Iterator 인터페이스를 구현한 클래스의 인스턴스를 반환하는 메서드 iterator()가 정의되어 있다. 즉, iterator() 메서드를 호출하면, Iterator 타입의 인스턴스가 반환된다. 따라서 Collection 인터페이스를 상속받는 List와 Set 인터페이스를 구현한 클래스들은 iterator() 메서드를 사용할 수 있다. Iterator() 메서드 iterator() 메서드를 통해 만들어진 Iterator 인스턴스는 hasNext(), next(), remove() 등의 메서드..

반응형