코드 그라데이션

후발대 15일차 전체 코드 본문

Java/후발대

후발대 15일차 전체 코드

완벽한 장면 2023. 2. 11. 02:03

후발대수업_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