제네릭 프로그래밍
기존의 방법
어떤 객체든 참조할 수 있는 Object 참조 변수를 사용
-> 형변환(Casting) 필요
제네릭을 이용한 방법
클래스에 저장하는 데이터의 타입은 객체 생성 시에 결정된다
제네릭 메소드
- <T> : 타입이 결정되지 않음을 나타냄
- T : return 자료형, 메소드 사용 시 정해짐
Ex)
정수 배열, 실수 배열, 문자 배열을 모두 출력할 수 있는 제네릭 메소드 printArray()를 작성하여 보자.
public class GenericMethodTest {
public static <T> void printArray(T[] array) {
for (T element : array) {
System.out.printf("%s ", element);
}
System.out.println();
}
public static void main(String args[]) {
Integer[] iArray = { 10, 20, 30, 40, 50 };
Double[] dArray = { 1.1, 1.2, 1.3, 1.4, 1.5 };
Character[] cArray = { 'K', 'O', 'R', 'E', 'A' };
printArray(iArray);
printArray(dArray);
printArray(cArray);
}
}
더보기
10 20 30 40 50
1.1 1.2 1.3 1.4 1.5
K O R E A
%s 로 모든 객체 출력 가능
모든 객체는 object 클래스 상속받기 때문에 toString 메서드가 존재
컬렉션
자바에서 자료구조를 구현한 클래스
컬렉션의 특징
- 제네릭을 사용한다
- int나 double 같은 기초 자료형은 저장할 수 없다. 클래스만 가능
- wrapper 클래스인 Integer나 Double은 사용 가능
- 기초자료형을 저장하면 자동으로 랩퍼 클래스 객체로 변환됨: 오토박싱(auto boxing)
컬렉션 인터페이스 종류
ArrayList
- 가변 크기의 배열
- 삽입, 삭제 시 인덱스 자동 관리
- 배열의 업그레이드 버전
- 삽입, 삭제가 쉽다
- 스레드 간 동기화를 하지 않아 Verter 클래스보다 성능이 좋음
기본 연산
Set
Map
기본연산
큐(Queue)
- FIFO
- 큐를 구현한 3개의 클래스가 주어진다.
- ArrayDeque
- LinkedList
- PriorityQueue
우선순위큐
- 무작위로 삽입되었더라도 정렬된 상태로 원소들을 추출
- remove()를 호출할 때마다 가장 작은 원소가 추출
- 히프(heap)를 내부적으로 사용
Collections 클래스
여러 유용한 알고리즘을 제공함
- 정렬(Sorting)
- 섞기(Shuffling)
- 탐색(Searching)
Ex) 정렬
import java.util.*;
public class Sort {
public static void main(String[] args) {
String[] sample = { "i", "walk", "the", "line" };
List<String> list = Arrays.asList(sample); // 배열을 리스트로 변경
Collections.sort(list);
System.out.println(list);
}
}
더보기
[i, line, the, walk]
'JAVA > 척척학사 스터디' 카테고리의 다른 글
[JAVA] 네트워크 프로그래밍 (1) | 2023.06.07 |
---|---|
[JAVA] 스레드(thread), 람다식(Lambda) (0) | 2023.05.31 |