[개발] - 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
반응형