Iterator<E>
클래스를 작성할 때, Object 타입 대신 T와 같은 타입 변수를 사용
public interface Iterator{
boolean hasNext();
Object next();
void remove();
}
↓
public interface Iterator<E> {
boolean hasNext();
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;
예제
public class Ex4 {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<Student>();
list.add(new Student("자바왕", 1, 1));
list.add(new Student("자바짱", 1, 2));
list.add(new Student("홍길동", 2, 1));
Iterator<Student> it = list.iterator();
while (it.hasNext()) {
//Student s = it.next();
//Student s = (Student) it.next(); // 지네릭스를 사용하지 않으면 형변환 필요
//System.out.println(s.name);
System.out.println(it.next().name);
}
}
}
class Student {
String name = "";
int ban;
int no;
Student(String name, int ban, int no) {
this.name = name;
this.ban = ban;
this.no = no;
}
}
HashMap<K, V>
여러 개의 타입 변수가 필요한 경우, 콤마( ,)를 구분자로 선언
HashMap<String, Student> map = new HashMap<String, Student>(); // 생성
map.put("자바왕", new Student("자바왕", 1, 1, 100, 100, 100)); // 데이터 저장
public class HashMap<K, V> extends AbstactMap<K, V> { // 일부 생략
public V get(Object key) { }
public V put(K key, V value) { }
public V remove(Object key) { }
...
}
↓
public class HashMap extends AbstactMap { // 일부 생략
public Student get(Object key) { }
public Student put(String key, Student value) { }
public Student remove(Object key) { }
...
}
Student s1 = (Student)s1.get("1-1"); // 변경 전
Student s1 = s1.get("1-1"); // 변경 후
예제
public class Ex5 {
public static void main(String[] args) {
HashMap<String, Student> map = new HashMap(); // JDK 1.7 버전부터 생성자에 타입지정 생략가능
map.put("자바왕", new Student("자바왕", 1, 1, 100, 100, 100));
map.put("킹자바", new Student("킹자바", 1, 1, 1, 1, 1));
map.put("킹자바", new Student("킹자바", 1, 1, 1, 1, 1));
//Student s = (Student) map.get("자바왕");
//Student s = map.get("자바왕");
//System.out.println(s.name);
System.out.println(map.get("자바왕").name); // 한줄로 가능해짐
System.out.println(map.get("자바왕").kor); // 한줄로 가능해짐
}
static class Student {
String name = "";
int ban;
int no;
int kor;
int eng;
int math;
Student(String name, int ban, int no, int kor, int eng, int math) {
this.name = name;
this.ban = ban;
this.no = no;
this.kor = kor;
this.eng = eng;
this.math = math;
}
}
}
'Java' 카테고리의 다른 글
[Java] 와일드 카드, 지네릭 메서드 (0) | 2024.05.10 |
---|---|
[Java] 지네릭 클래스의 제약 (0) | 2024.05.10 |
[Java] 지네릭스란? (0) | 2024.05.09 |
[Java] Collections 컬렉션을 위한 메서드 (0) | 2024.05.08 |
[Java] HashMap 키와 값 (0) | 2024.05.08 |