Iterator, Hashmap과 제네릭스
iterator, HashMap을 보면서 제네릭스와 더 친해져 보자!
Iterator<E>
-클래스를 작성할 때, Object타입 대신 T와 같은 타입 변수를 사용
public interface Iterator{
boolean hashNext();
Object next();
void remove();
}
//아래와 같이 바뀌었다.
public interface Iterator<E>{
boolean hashNext();
E next();
void remove();
}
Iterator it = list.iterator();
while(it.hasNext()){
Student s = (Student)it.next();
...
}
//제네릭스가 도입되면서 아래와 같이 형변환을 해줄 필요가 없어짐
Iterator<Student> it = list.iterator();
while(it.hasNext()){
Student s = it.next(); // 타입 캐스팅 안해도 된다!
...
}
EX)
import java.util.ArrayList;
import java.util.Iterator;
public class EX03 {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
list.add(new Student("자바왕", 1, 1));
list.add(new Student("자바짱", 1, 2));
list.add(new Student("자바킹", 2, 1));
Iterator<Student> it = list.iterator();
// Iterator it2 = list.iterator(); // 타입을 지정해주지 않으면 아래에서 형변환 해줘야함
while (it.hasNext())
System.out.println(it.next());
}
}
실행결과:
Student{name='자바왕', no=1, ban=1}
Student{name='자바짱', no=1, ban=2}
Student{name='자바킹', no=2, ban=1}
HashMap<K,V>
-여러 개의 타입 변수가 필요한 경우, 콤마(,)를 구분자로 선언
//HashMap<K, V>
public class HashMap<K,V> extends AbstractMap<K, V>{
...
public V get(Object key){...}
public V put(K key, V value){...}
public V remove(Object key){...}
...
}
//아래와 같이 생성하면
HashMap<String, Student> map = new HashMap<String, Student>(); //생성
//HashMap은 아래와 같이 된다.
public class HashMap<String,Student> extends AbstractMap<String, Student>{
...
public Student get(String key){...}
public Student put(String key, Student value){...}
public Student remove(String key){...}
...
}
map.put("자바왕", new Student("자바왕", 1, 1, 100, 100, 100));//데이터 저장
EX)
import java.util.HashMap;
public class EX04 {
public static void main(String[] args) {
HashMap<String, Student> map = new HashMap<>();
map.put("자바왕", new Student("자바왕", 1, 1));
map.put("자바짱",new Student("자바짱", 1, 2));
map.put("자바킹",new Student("자바킹", 2, 1));
Student s = map.get("자바왕");
System.out.println(s); // Student{name='자바왕', no=1, ban=1}
}
}
출처: 남궁성님 유튜브 강의
https://www.youtube.com/user/MasterNKS
'java' 카테고리의 다른 글
Generics 05 와일드 카드, 제네릭 메서드 (0) | 2022.01.04 |
---|---|
Generics 04 제한된 제네릭 클래스(제네릭스의 제약) (0) | 2022.01.03 |
Generics 02 제네릭스 용어, 제네릭 타입과 다형성 (0) | 2022.01.02 |
Generics 01 제네릭스란? (0) | 2021.12.31 |
Lambda 07 Collector (0) | 2021.12.30 |