본문 바로가기

CS Study/Java

10. 제네릭

1. 제네릭에 변수 담기

class Box<T> {
	private T data;
	public void set(T data ) {
		this.data = data;
	}
	public T get() {
		return data;
	}
}
public class Test4 {
	public static void main(String[] args) {
		Box <String> b = new Box<>();
		b.set("자바");
		String s = (String)b.get();
		System.out.println(s);
		
		Box <Integer> b2 = new Box<>();
		b2.set(10);
		Integer i = b2.get();
		System.out.println(i);
	}

}

2. 제네릭에 2개 이상의 변수 담기

class Pair <T>{
	private T data1;
	private T data2;
	public Pair(T value1, T value2) {
		this.data1 = value1;
		this.data2 = value2;
	}
	public T getFirst() {return data1;}
	public T getSecond() {return data2;}
}
public class Test5 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Pair <String> pair = new Pair <String> ("Apple", "Tomato");
		System.out.println(pair.getFirst()+","+pair.getSecond());
		
		Pair <Double> db = new Pair <Double> (1.5, 2.3);
		System.out.println(db.getFirst()+","+db.getSecond());

		

	}

}

3. 이름 검색하기 - HashMap 제네릭 활용

import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Scanner;


public class Assign {


	public static void main(String[] args) {
		HashMap<String,Integer> dic = new HashMap<String,Integer>();
		dic.put("유재석", 70);
		dic.put("강호동", 80);
		dic.put("이경규", 90);
		Scanner scanner = new Scanner(System.in);
		while(true) {
			System.out.println("이름?");
			String name = scanner.next();
			if(name.equals("quit")) {
				System.out.println("종료합니다...");
				break;
			}
			int score = dic.get(name);
			if (name == null) {
				System.out.println("없음");
			}
			else {
				System.out.println(score);
			}	

			
		}
	} 
}

4. 이름과 학번 등록하기 - 제네릭 활용

class Pair <F,V>{
	private F data1;
	private V data2;
	public Pair(F field, V value) {
		this.data1 = field;
		this.data2 = value;
	}
	public F getKey() {
		return data1;
	}
	public V getValue() {
		return data2;
	}
}
public class Test {

	public static void main(String[] args) {
		Pair<String,Integer>p1 = new Pair<String,Integer> ("학번:", 12345678);
		System.out.println(p1.getKey() + " "+p1.getValue());
		Pair<String,String>p2 = new Pair<String,String> ("이름:","홍길동");
		System.out.println(p2.getKey() + " "+p2.getValue());

	}

}

5. 마지막 원소 출력하기 - 제네릭 메소드 활용

class MyArray {
	public static <T> T getLast(T[] a) {
		return a[a.length - 1];
	}
}
public class Test2 {

	public static void main(String[] args) {
		String[] language = {"C++" ,"C#","JAVA"};
		String last = MyArray.getLast(language);
		System.out.println(last);
		
		Integer[] value = {1,3,2,5,4};
		Integer i = MyArray.getLast(value);
		System.out.println(i);

	}

}

'CS Study > Java' 카테고리의 다른 글

12. 파일 스트림  (0) 2022.04.07
11. 컬렉션  (0) 2022.04.07
8. 인터페이스와 추상 메소드  (0) 2022.04.07
7. 상속 - 메소드 오버라이딩  (0) 2022.04.07
6. 패키지 / 접근 제한자 / 상속  (0) 2022.04.07