728x90

Language 120

[Java] 자바 컬렉션 프레임워크 - Iterator(반복자)와 ListIteratorIterator(리스트 반복자)

Iterator 인터페이스 자바의 컬렉션 프레임워크는 컬렉션에 저장된 요소를 읽어오는 방법을 Iterator 인터페이스로 표준화하고 있다. Collection 인터페이스에서는 Iterator 인터페이스를 구현한 클래스의 인스턴스를 반환하는 iterator() 메소드를 정의하여 각 요소에 접근하도록 하고 있다. 따라서 Collection 인터페이스를 상속받는 List와 Set 인터페이스에서도 iterator() 메소드를 사용할 수 있다. // 연결 리스트를 반복자(iterator)를 사용하여 순회 LinkedList lnkList = new LinkedList(); lnkList.add(4); lnkList.add(2); lnkList.add(3); lnkList.add(1); Iterator iter =..

Language/Java 2024.04.20

[Java] 자바 컬렉션 프레임워크 - Map 컬렉션 클래스

Map 컬렉션 클래스 Map 인터페이스는 Collection 인터페이스와는 다른 저장 방식을 가진다. Map 인터페이스를 구현한 Map 컬렉션 클래스들은 키와 값을 하나의 쌍으로 저장하는 방식(key-value 방식)을 사용한다. 여기서 키(key)란 실질적인 값(value)을 찾기 위한 이름의 역할을 한다. Map 인터페이스를 구현한 모든 Map 컬렉션 클래스는 다음과 같은 특징을 가진다. 1. 요소의 저장 순서를 유지하지 않는다. 2. 키는 중복을 허용하지 않지만, 값의 중복은 허용한다. 대표적인 Map 컬렉션 클래스에 속하는 클래스는 1. HashMap, 2. Hashtable, 3. TreeMap과 같다. HashMap 클래스 HashMap 클래스는 Map 컬렉션 클래스에서 가장 많이 사용되는 클..

Language/Java 2024.04.14

[Java] 자바 컬렉션 프레임워크 - Set 컬렉션 클래스

Set 컬렉션 클래스 Set 인터페이스를 구현한 모든 Set 컬렉션 클래스는 다음과 같은 특징을 가진다. 1. 요소의 저장 순서를 유지하지 않습니다. 2. 같은 요소의 중복 저장을 허용하지 않습니다. HashSet 클래스 HashSet 클래스는 Set 컬렉션 클래스에서 가장 많이 사용되는 클래스 중 하나다. JDK 1.2부터 제공된 HashSet 클래스는 해시 알고리즘(hash algorithm)을 사용하여 검색 속도가 매우 빠르다. 이러한 HashSet 클래스는 내부적으로 HashMap 인스턴스를 이용하여 요소를 저장한다. HashSet 클래스는 Set 인터페이스를 구현하므로, 요소를 순서에 상관없이 저장하고 중복된 값은 저장하지 않는다. 만약 요소의 저장 순서를 유지해야 한다면 JDK 1.4부터 제공..

Language/Java 2024.04.14

[Java] 자바 컬렉션 프레임워크 - Queue 컬렉션 클래스

Queue 인터페이스 클래스로 구현된 스택과는 달리 자바에서 큐 메모리 구조는 별도의 인터페이스 형태로 제공된다. Queue 인터페이스를 상속받는 하위 인터페이스는 1. Deque, 2. BlockingDeque, 3. BlockingQueue, 4. TransferQueue과 같다. 따라서 Queue 인터페이스를 직간접적으로 구현한 클래스는 상당히 많다. 그중에서도 Deque 인터페이스를 구현한 LinkedList 클래스가 큐 메모리 구조를 구현하는 데 가장 많이 사용된다. 큐 메모리 구조는 선형 메모리 공간에 데이터를 저장하면서 선입선출(FIFO)의 시멘틱을 따르는 자료 구조다. 즉, 가장 먼저 저장된(push) 데이터가 가장 먼저 인출(pop)되는 구조다. Queue 인터페이스는 큐 메모리 구조를 ..

Language/Java 2024.04.14

[Java] 자바 컬렉션 프레임워크 - List 컬렉션 클래스

List 컬렉션 클래스 List 인터페이스를 구현한 모든 List 컬렉션 클래스는 1. 요소의 저장 순서가 유지하고, 2. 같은 요소의 중복 저장을 허용하는 특징을 가진다. ArrayList 클래스 ArrayList 클래스는 가장 많이 사용되는 컬렉션 클래스 중 하나다. ArrayList 클래스는 내부적으로 배열을 이용하여 요소를 저장한다. ArrayList 클래스는 배열을 이용하기 때문에 인덱스를 이용해 배열 요소에 빠르게 접근할 수 있다. 하지만 배열은 크기를 변경할 수 없는 인스턴스이므로, 크기를 늘리기 위해서는 새로운 배열을 생성하고 기존의 요소들을 옮겨야 하는 복잡한 과정을 거쳐야 한다. 물론 이 과정은 자동으로 수행되지만, 요소의 추가 및 삭제 작업에 걸리는 시간이 매우 길어지는 단점을 가지게..

Language/Java 2024.04.14

[Java] 자바 컬렉션 프레임워크 - 정의, 상속관계, 특징

컬렉션 프레임워크(collection framework)란? 자바에서 컬렉션 프레임워크(collection framework)란 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미한다. 즉, 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것이다. 컬렉션 프레임워크는 자바의 인터페이스(interface)를 사용하여 구현된다. 자바의 Collection은 인터페이스이며, Collections는 클래스임을 주의해야 한다. 자바의 Collections 클래스는 JDK 1.2부터 제공되는 컬렉션에서 동작하거나 컬렉션을 반환하는 클래스 메소드(static method)만으로 구성된 클래스다. 컬렉션 프레임워크 주요 인터페이스 컬..

Language/Java 2024.04.14

[Java] 자바 제네릭 - 선언, 생성, 타입변수 제한, 제네릭 메소드, 와일드 카드

제네릭(generic)이란? 자바에서 제네릭(generic)이란 데이터의 타입(data type)을 일반화한다(generalize)는 것을 의미한다. 제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법이다. 이렇게 컴파일 시에 미리 타입 검사(type check)를 수행하면 다음과 같은 장점을 가진다. 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있다. 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있다. JDK 1.5 이전에서는 여러 타입을 사용하는 대부분의 클래스나 메소드에서 인수나 반환값으로 Object 타입을 사용했다. 하지만 이 경우에는 반환된 Object 객체를 다시 원하는 타입으로 타입 변환해야 하며, 이때 오류가 발..

Language/Java 2024.04.14

[Java] 자바 API 클래스 - Calendar 클래스

java.util 패키지 java.util 패키지에는 프로그램을 개발하는 데 사용할 수 있는 유용한 유틸리티 클래스가 다수 포함되어 있다. java.lang 패키지 다음으로 가장 많이 사용되는 패키지가 java.util 패키지다. 하지만 import 문을 사용하지 않아도 바로 사용할 수 있는 java.lang 패키지와는 달리 java.util 패키지는 import 문으로 패키지를 불러오고 나서야 클래스 이름만으로 사용할 수 있다. java.util.Calendar 클래스 Calendar 클래스는 자바에서 날짜와 시간에 관한 데이터를 손쉽게 처리할 수 있도록 제공하는 추상 클래스다. Calendar 클래스가 추상 클래스로 선언된 이유는 나라마다 사용하는 달력 체계가 조금씩 다를 수 있기 때문이다. Cale..

Language/Java 2024.04.13

[Java] 자바 API 클래스 - Arrays 클래스

java.util 패키지 java.util 패키지에는 프로그램을 개발하는 데 사용할 수 있는 유용한 유틸리티 클래스가 다수 포함되어 있다. java.lang 패키지 다음으로 가장 많이 사용되는 패키지가 java.util 패키지다. 하지만 import 문을 사용하지 않아도 바로 사용할 수 있는 java.lang 패키지와는 달리 java.util 패키지는 import 문으로 패키지를 불러오고 나서야 클래스 이름만으로 사용할 수 있다. java.util.Arrays 클래스 Arrays 클래스의 모든 메소드는 클래스 메소드(static method)이므로, 객체를 생성하지 않고도 바로 사용할 수 있다. Arrays 클래스는 java.util 패키지에 포함되므로, 반드시 import 문으로 java.util 패키..

Language/Java 2024.04.13

[Java] 자바 API 클래스 - Enum 클래스

java.lang 패키지 java.lang 패키지는 자바에서 가장 기본적인 동작을 수행하는 클래스들의 집합이다. 따라서 자바에서는 java.lang 패키지의 클래스들은 import 문을 사용하지 않아도 클래스 이름만으로 바로 사용할 수 있다. 열거체(enumeration type) JDK 1.5 이전의 자바에서는 열거체를 사용할 수 없었지만 JDK 1.5부터는 C언어의 열거체보다 더욱 향상된 성능의 열거체를 정의한 Enum 클래스를 사용할 수 있게 되었다. 열거체 장점 열거체를 비교할 때 실제 값뿐만 아니라 타입까지도 체크한다. 열거체의 상숫값이 재정의되더라도 다시 컴파일할 필요가 없다. 열거체의 정의 및 사용 자바에서는 enum 키워드를 사용하여 열거체를 정의하고, .을 이용해 사용한다. enum 열거..

Language/Java 2024.04.13
728x90