본문 바로가기

java22

Generics 03 Iterator, HashMap과 제네릭스 Iterator, Hashmap과 제네릭스 iterator, HashMap을 보면서 제네릭스와 더 친해져 보자! Iterator -클래스를 작성할 때, Object타입 대신 T와 같은 타입 변수를 사용 public interface Iterator{ boolean hashNext(); Object next(); void remove(); } //아래와 같이 바뀌었다. public interface Iterator{ boolean hashNext(); E next(); void remove(); } Iterator it = list.iterator(); while(it.hasNext()){ Student s = (Student)it.next(); ... } //제네릭스가 도입되면서 아래와 같이 형변환을 해.. 2022. 1. 3.
Generics 02 제네릭스 용어, 제네릭 타입과 다형성 제네릭스 용어 Box 제네릭 클래스. 'T의 Box' 또는 'T Box'라고 읽는다. T 타입 변수 또는 타입 매개변수.(T는 타입 문자) Box 원시 타입(raw type) class Box {} ← 제니릭 클래스 선언 사용시: Box b = new Box(); ← String은 대입된 타입(매개변수화된 타입) 제네릭 타입과 다형성 참조변수와 생성자의 타입은 일치해야 한다. ArrayList tvList = new ArrayList(); // OK ArrayList tvList = new ArrayList(); // ERROR (조상 자손 관계라도 소용없다.) 제네릭 클래스간의 다형성은 성립된다. List tvList = new ArrayList(); // OK : ArrayList가 List구현 Li.. 2022. 1. 2.
Generics 01 제네릭스란? 제네릭스란? - 컴파일시 타입을 체크해주는 기능 ArrayList tvList = new ArrayList(); tvList.add(new TV()); // OK tvList.add(new Audio()); // ERROR! Tv tv = (TV)tvList.get(0); //컴파일러가 이미 TV타입의 ArrayList임을 알고 있으므로 Tv tv = tvList.get(0); //이렇게 형 변환 안해줘도 된다. 장점: 타입 안정성을 제공한다. 타입체크와 형변환을 생략할 수 있으므로, 코드가 간결해진다. 타입변수 -클래스를 작성할 때, Object타입 대신 타입 변수(E)를 선언해서 사용. public class ArrayList extends AbstractList{ private transient O.. 2021. 12. 31.
Lambda 07 Collector collect()와 Collectors collect()는 Collector를 매개변수로 하는 스트림의 최종 연산 Object collect(Collector collector) // Collector를 구현한 클래스의 객체를 매개변수로 Object collect(Supplier supplier, BiConsumer accumulator, BiConsumer combiner)//잘 안쓰임 reduce() : 리듀싱 collect() : 그룹별 리듀싱 Collector는 수집(collect)에 필요한 메소드를 정의해 놓은 인터페이스 public interface Collector { // T(요소)를 A에 누적한 다음, 결과를 R로 변환해서 반환 Supplier supplier(); //StringBuil.. 2021. 12. 30.