https://youtu.be/VABNU7YZrgs?si=c9xWfryXAeYzDct9
01. Comparable: 대소 비교를 위한 인터페이스
Comparable: 자바에 정의되어 있는 인터페이스
Float이라는 class는 Comparable를 상속받아 사용함.
- Coparable 인터페이스는 일반적으로 comparTo메소드를 재정의해 두 개의 객체를 비교한다.
- String, Data, Integer, Character, Double 등의 Wrapper 클래스에는 이미 Comparable인터페이스가 구현되어 있기 때문에 compareTo의 메소드를 재정의할 필요가 없다.
- Comparable 인터페이스는 일반적으로 다음과 같이 선언해 사용한다.
public class 클래스이름 implements Coparable<클래스이름> {
...
public int compareTo(클래스이름 other){
...
}
}
- 인터페이스 안의 추상메소드를 인터페이스를 상속받아 추상메소드를 재정의하여 사용할 수 있다.
*Wrapper클래스: 자바의 기본 타입을 클래스화 한 8개 클래스를 통칭함
- Comparable은 java.lang에 선언된 이터페이스
- 객체의 하나의 멤버만을 기준으로 객체를 정렬할 때 사용함
- 각각 다른 클래스를 선언할 때마다 객체들을 정렬하기 위해 별도의 비교 메소드를 일일이 선언해야 하는 불편을 덜어줌
- 만일 Comparable 인터페이스가 없었다면, 객체들을 정렬해야 하는 각각의 클래스마다 정렬 메소드를 정의해야 함
- 이러한 정렬 메소드는 거의 동일, 단지 객체의 멤버를 비교하는 부분만 다름.
*Comparator: java.util 에 선언된 인터페이스
- 한 프로그램 내에서 동일한 타입의 객체들을 여러개의 멤버를 기준으로 나열할 수 있음
- compare 메소드를 가짐
public interface Comparator{
public int compare(T first, T second);
}
- 일반적으로 비교에 기준이 되는 멤버를 위한 별도의 (제 3의) 클래스를 다음과 같이 선언해 사용함
//클래스 이름 = 제 3의 클래스
public class 클래스이름 implements Coparator<클래스이름> {
...
public int companr(클래스이름 first, 클래스이름 second) {
...
}
}
02. Collection
Collection의 개념
- 요소(element)라고 불리는 가변 개수의 객체들의 저장소
- 배열의 원소는 갯수가 정해져 있음. collection은 원소의 갯수를 변경할 수 있음
- 객체 컨테이너라고도 불림
- 요소의 개수에 따라 크기 자동 조절
- 요소의 삽입, 삭제에 따른 요소의 위치 자동 이동
- 배열에서는 index 1에 해당하는 원소를 삭제하면 다른 원소들의 자리를 이동시켜야 하지만, 컬렉션은 자동으로 이동 됨
- 고정 크기의 배열을 다루는 어려움 해소
- 다양한 객체들의 삽입, 삭제, 검색 등의 관리가 용이함
*컬렉션 자바 인터페이스와 클래스
컬렉션의 특징
1. 컬렉션은 제네릭(generics)기법으로 구현
- 제네릭
특정 타입만 다루지 않고, 여러 종류의 타입으로 변할 수 있도록 클래스나 메소드를 일반화 시키는 기법
클래스나 인터페이스 이름에 <E>,<K>,<V>등 타입 매개변수 포함
- 제네릭 컬렉션 사례: 벡터 Vector<E>
- <E>에서 E에 구체적인 타입을 주어 구체적 타입만 다루는 벡터로 활용
- 정수만 다루는 컬렉션 벡터 Vector<Integer>
- 문자열만 다루는 컬렉션 벡터 Vector<String>
2. 컬렉션의 요소는 객체만 가능
- int, char, double 등의 기본 타입으로 구체화 불가능
Vector <int> v = new Vector<int>(); : 컴파일 오류 int 사용 불가
Vector <Integer> v = new Vector <Integer>(); : 정상 코
'JAVA' 카테고리의 다른 글
자료구조 06. Iterator, HashMap, 제네릭 만들기 (0) | 2023.10.15 |
---|---|
자료구조 05. Generic기법, Vector, ArrayList (0) | 2023.10.15 |
자료구조 03. 클래스, 메소드, 상속 (0) | 2023.10.15 |
자료구조 02. 자료구조와 알고리즘, 추상데이터타입, 재귀알고리즘 (0) | 2023.10.15 |
자료구조 01. 강의 개요, 자료구조 종류 (0) | 2023.10.15 |