클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것
한마디로 특정 타입을 미리 지정해주는 것이 아닌 필요에 의해 지정할 수 있도록 하는 일반(Generic) 타입을 의미
<>
안에 기본 타입을 사용할 수 없고 객체 타입을 넣어주어야 한다.// AppleBasket
public class AppleBasket {
private Apple apple;
public Apple getApple() {
return apple;
}
public void setApple(Apple apple) {
this.apple = apple;
}
}
// Apple
public class Apple {
private int sweet; // 당도
public Apple(int sweet) {
this.sweet = sweet;
}
@Override
public String toString() {
return "Apple{" +
"sweet=" + sweet +
'}';
}
}
// main
public static void main(String[] args) {
AppleBasket ab = new AppleBasket();
ab.setApple(new Apple(10));
Apple apple = ab.getApple();
BananaBasket bb = new BananaBasket();
bb.setBanana(new Banana(15));
Banana banana = bb.getBanana();
// Basket 클래스의 F에 Apple이 들어감
Basket<Apple> appleBasket = new Basket<Apple>();
appleBasket.setFruit(new Apple(1));
Apple fruit = appleBasket.getFruit();
Basket<Banana> bananaBasket = new Basket<Banana>();
bananaBasket.setFruit(new Banana(33));
Banana fruit1 = bananaBasket.getFruit();
}
// 제너릭 클래스: 타입 복제가 가능한 클래스
public class Basket<F> {
private F fruit;
public void setFruit(F fruit) {
this.fruit = fruit;
}
public F getFruit() {
return fruit;
}
}
객체들을 효율적으로 관리하기 위한 자료 구조들의 집합
// 제네릭을 이용해서 쉽게 String 배열을 생성
List<String> foods = new ArrayList<>();
직접 만들어서 사용하지않고 있는 메서드 사용하면 된다.
객체 추가 기능
// 리스트에 초기값 넣고 시작하기
int[] arr = {10, 20, 30};
List<Integer> numbers = new ArrayList<>(List.of(24, 99, 10, 20 ,30));
System.out.println("numbers = " + numbers);
// 오름차 정렬
numbers.sort(Integer::compareTo);
System.out.println("numbers = " + numbers);
// 내림차 정렬
numbers.sort(Comparator.reverseOrder());
System.out.println("numbers = " + numbers);
public static void main(String[] args) {
// 중복저장 허용 X, 순서가 없음, 비교적 빠른 저장속도
Set<String> set = new HashSet<>();
// 탐색시에는 개별 탐색은 불가, 전체탐색 가능
for (String s : set) {
System.out.println("s = " + s);
}
// set은 보통 데이터 중복을 빠르게 제거할 때 사용
List<Integer> numbers = List.of(3, 3, 1, 1, 1, 3, 3, 5, 5, 5, 7, 7);
// set으로 변환
Set<Integer> numberSet = new HashSet<>(numbers);
System.out.println("numberSet = " + numberSet);
// list로 다시 변환
numbers = new ArrayList<>(numberSet);
System.out.println("numbers = " + numbers);
}