코드 그라데이션
후발대 15일차 전체 코드 본문
후발대수업_15.
Iterator, 퀴즈, 익명클래스
- Iterator : 프로그래밍에서 이터레이터는 개발자가 컨테이너, 특히 리스트를 순회할 수 있게 해주는 객체다. 이터레이터는 데이터베이스 커서와 동작이 유사하다.
- 객체 지향적 프로그래밍에서 배열이나 그와 유사한 자료구조의 내부요소를 순회하는 객체
- 배열이나, 셋, 맵을 순회하고 불필요한 데이터를 바로 삭제 할 수 있다.
- 익명클래스는 내부클래스 (Inner Class) 일종으로 단어 그대로 이름이 없는 클래스를 말한다.
- 익명 클래스는 클래스 정의와 동시에 객체를 생성할 수 있다.
- 따로 클래스 정의 없이 메소드 내에서 바로 클래스를 생성해 인스턴스화 할 수 있으며 이렇게 클래스의 선언과 객체의 생성을 동시에 하기 때문에 단 한번만 사용 될 수 있고, 익명으로 정의된 클래스는 일회용으로 사용되고 버려진다.
- 만일 어느 메소드에서 부모클래스의 자원을 상속받아 재정의하여 사용할 자식 클래스가 한번만 사용되고 버려질 자료형이면, 굳이 상단에 클래스를 정의하기 보다는, 지역변수처럼 익명클래스로 정의하고 스택이 끝나면 삭제되도록 하는 것이 유지보수면에서나 프로그램 메모리면에서나 이점을 얻을 수 있다.
실습코드
_08_Iterator
package com.sparta.hbd04.prac01.prac12;
import java.util.*;
public class _08_Iterator {
public static void main(String[] args) {
// 이터레이터
List<String> list = new ArrayList<>();
list.add("유재석");
list.add("(알수없음)");
list.add("김종국");
list.add("(알수없음)");
list.add("강호동");
list.add("(알수없음)");
list.add("박명수");
list.add("(알수없음)");
list.add("조세호");
for(String s : list){
System.out.println(s);
}
System.out.println("----------");
Iterator<String> it = list.iterator();
System.out.println(it.next());
System.out.println(it.next());
System.out.println(it.next());
System.out.println(it.next());
System.out.println("----");
it =list.iterator();// 커서 위치를 처음으로 이동
while (it.hasNext()) {
System.out.println(it.next());
}
System.out.println("--------");
// 여기부터 오늘 (02.06)
it = list.iterator();
while (it.hasNext()) {
String s = it.next();
if (s.contains("(알수없음)")) {
it.remove(); // 삭제
}
}
it = list.iterator(); // 커서를 처음 위치로 이동
while (it.hasNext()) {
System.out.println(it.next());
}
System.out.println("---------");
HashSet<String> set = new HashSet<>();
set.add("유재석");
set.add("박명수");
// set.iterator();
Iterator<String> itSet = set.iterator();
while (itSet.hasNext()) {
System.out.println(itSet.next());
}
System.out.println("------");
HashMap<String, Integer> map = new HashMap<>();
map.put("유재석", 10);
map.put("박명수", 5);
//map.iterator() // 제공되지 않음
// map.keySet().iterator();
Iterator<String> itMapKey = map.keySet().iterator();
while (itMapKey.hasNext()) {
System.out.println(itMapKey.next());
}
System.out.println("---------");
//map.values().iterator();
Iterator<Integer> itMapValue = map.values().iterator();
while (itMapValue.hasNext()) {
System.out.println(itMapValue.next());
}
System.out.println("----------------");
// map.entrySet().iterator();
Iterator<Map.Entry<String, Integer>> itMap = map.entrySet().iterator();
while (itMap.hasNext()) {
System.out.println(itMap.next());
}
}
}
퀴즈
package com.sparta.hbd04.prac01;
// 아이유 파이썬
// 정우성 자바
// 유재석 자바
// 한소희 C
// 강동원 파이썬
import java.util.ArrayList;
// 자바 자격증을 보유한 학생
// ----------------------
// 박명수
// 김종국
class Student {
public String name;
public String certification;
public Student(String name, String certification) {
this.name = name;
this.certification = certification;
}
}
public class Prac15 {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
list.add(new Student("아이유", "파이썬"));
list.add(new Student("정우성", "자바"));
list.add(new Student("유재석", "자바"));
list.add(new Student("한소희", "C"));
list.add(new Student("강동원", "파이썬"));
System.out.println("자바 자격증을 보유한 학생");
System.out.println("-----------");
for(Student student: list) {
if(student.certification.equals("자바")) {
System.out.println(student.name);
}
}
}
}
----------
익명클래스
_01_AnonymousClass1
package com.sparta.hbd04.prac01.prac15;
public class _01_AnonymousClass1 {
public static void main(String[] args) {
// 익명 클래스
Coffee c1 = new Coffee();
c1.order("아메리카노");
System.out.println("--------");
Coffee c2 = new Coffee();
c2.order("라떼");
System.out.println("-----------");
// 굉장히 친한 친구 방문
Coffee specialCoffee = new Coffee() {
@Override
public void order(String coffee) {
super.order(coffee);
System.out.println("(귓속말) 딸기 케이크는 서비스예요.");
}
@Override
public void returnTray() {
System.out.println("(귓속말) 자리에 두시면 제가 치울게요.");
}
};
specialCoffee.order("바닐라 라떼");
specialCoffee.returnTray();
}
}
class Coffee {
public void order(String coffee) {
System.out.println("주문하신 " + coffee + " 나왔습니다.");
}
public void returnTray() {
System.out.println("커피 반납이 완료되었습니다. ");
}
}
_02_AnonymousClass2
package com.sparta.hbd04.prac01.prac15;
public class _02_AnonymousClass2 {
public static void main(String[] args) {
HomeMadeBurger momMadeBurger = getMomMadeBurger();
momMadeBurger.cook();
System.out.println("------------");
HomeMadeBurger broMadeBurger = getBroMadeBurger();
broMadeBurger.cook();
}
private static HomeMadeBurger getBroMadeBurger() {
return new HomeMadeBurger() {
@Override
public void cook() {
System.out.println("집에서 만드는 동생표 군대리아");
System.out.println("재료: 빵, 치킨패티, 양배추 샐러드, 딸기잼, 치즈, 삶은 계란");
}
};
}
public static HomeMadeBurger getMomMadeBurger() {
return new HomeMadeBurger() {
@Override
public void cook() {
System.out.println("집에서 만드는 엄마표 수제 버거");
System.out.println("재료 : 빵, 소고기패티, 해쉬브라운, 양상추, 마요네즈, 피클");
}
};
}
}
abstract class HomeMadeBurger {
public abstract void cook();
}
728x90
'Java > 후발대' 카테고리의 다른 글
후발대 16일차 전체 코드 (0) | 2023.02.12 |
---|---|
후발대 15일차 설명 추가 코드 (0) | 2023.02.11 |
후발대 14일차 설명 포함 코드 (0) | 2023.02.03 |
후발대 14일차 전체 코드 (0) | 2023.02.03 |
후발대 13일차 설명 보충 (0) | 2023.02.03 |
Comments