#3 Generic & Collection

지우·2025년 12월 31일

java2

목록 보기
3/13

1. Generic

Box <String> box = new Box <String>();
Box <String> box = new Box <>();
  • 클래스 or 인터페이스에 사용
  • 컴파일 단계에서 미리 타입 체크

제네릭 메소드

  • 매개변수 타입 & 리턴 타입
public <T> Box <T> boxing(T t){..} //선언하기 //타입파라미터 리턴타입 메소드명
Box <Integer> box = <Integer> boxing(100); //호출 //타입 파라미터 추정가능하면 생략해도됨

와일드카드 타입

매개변수(인자)에서 허용 -> 유연성 !!

1) 제네릭타입<?> : 제한없음
2) 제네릭타입<? extends 상위타입> : 상위 클래스 제한
3) 제네릭타입<? super 하위타입> : 하위 클래스 제한

PECS 원칙

" PEG_CSA "
Producer extends get
Consumer super add

2. Collection

List Collection

Lab#4: ArrayList와 Iterator

Iterator

  • 컬렉션의 원소들을 하나씩 처리하는데 사용
  • hasNext()로 확인 -> next()로 가져옴
//for-each
for (Integer i : num)
	System.out.println(i);
//iterator
Iterator <Integer> e = num.listIterator();
while(e.hasNext()){
	System.out.println(e.next());
}

Set Collection

Lab#6: HashSet

#10 generic으로 구현(문자열도 출력할 수 있도록)

Map Collection

Lab#7: HashMap

#13 map.keySet() : key 모아서 set 형태로 리턴
#16 map.values() : value 모아서 리턴
#24 map.entrySet() : <K, V> key와 value 묶어서 리턴
// Map은 key를 통해 value를 가져올 수 있음 (map.get(key) -> value)
// Entry는 key와 value를 각각 가지고 올 수도 있음 (entry.getKey(), entry.getValue())
#28 for-each : entrySet을 하나씩 꺼내서 entry에 담고 getKey, getValue

Lab#8 : PrettyPrinter


interface PrettyPrinter

CollectionPrinter_forEach / CollectionPrinter_Iterator

for-each에서 )
#22 람다식 이용해서 표현하기 //이건 더 익숙해지고 나서 써보자,,

set.forEach(item -> System.out.println(item + ", "));

#24 메소드 참조로 표현하기

set.forEach(System.out::println);

#31~39 Map

for (Map.Entry<K, V> entry : map.entrySet()){
	System.out.println(entry.getKey() + " => " + entry.getValue());
}

Map은 entrySet -> entry -> getKey, getValue !!! 잊지말기

Iterator에서)
#23~27 Map

Iterator <Map.Entry<K, V> it = map.entrySet().iterator();
while(it.hasNext()){
	Map.Entry<K, V> entry = it.next();
	System.out.println(entry.getKey() + " => " + entry.getValue());

여기도 마찬가지로 entrySet -> entry -> getKey, getValue


CollectionPrinterTest



개념은 어느 정도 이해가 되고 있는 것 같다
이제 최대한 정답 코드 안보고 스스로 작성하는 연습을 더 해보자,,,,,,

0개의 댓글