코드 그라데이션

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

Java/후발대

후발대 13일차 전체 코드

완벽한 장면 2023. 2. 3. 08:55

Generics 2

Generics (제네릭스, 타입이 여러개일때), WrapperClass, 컬렉션 프레임 워크 中 ArrayList , LinkedList

  • 컬렉션 프레임워크라고 함은 많은 데이터를 효과적으로 쉽고 편리하게 관리하기 위해서 자바에서 제공해주는 어떤 클래스들의 모음
  • 컬렉션 프레임 워크에서는 데이터를 저장하는 자료구조에 따라 다음과 같은 주요 인터페이스를 정의하고 있음
    1. List 인터페이스
    2. Set 인터페이스
    3. Map 인터페이스
    4. 1에서도 ArrayList 와 LinkedList가 있음

 

Generics 추가

import com.sparta.hbd04.prac01.prac12.coffee.*;
import com.sparta.hbd04.prac01.prac12.user.User;
import com.sparta.hbd04.prac01.prac12.user.VIPUser;

public class _02_GenericsClass {
    public static void main(String[] args) {
        CoffeeByNumber c1 = new CoffeeByNumber(33);
        c1.ready();
        CoffeeByNickname c2 = new CoffeeByNickname("아이유");
        c2.ready();
        System.out.println("---------");

        CoffeeByName c3 = new CoffeeByName(34);
        c3.ready();
        CoffeeByName c4 = new CoffeeByName("이지은");
        c4.ready();
        System.out.println("-----");

        int c3Name = (int)c3.name;
        System.out.println("주문 고객 번호: "+c3Name);

        String c4Name= (String)c4.name;
        System.out.println("주문 고객 번호: "+c4Name);

//        c4Name= (String)c3.name;

        System.out.println("-----------");

        Coffee<Integer> c5 = new Coffee<>(35);
        c5.ready();
        int c5Name = c5.name;
        System.out.println("주문 고객 번호: " + c5Name);

        Coffee<String> c6 = new Coffee<>("강동원");
        c6.ready();
        String c6Name =c6.name;
        System.out.println("주문 고객 이름: " + c6Name);

        System.out.println("------------");

        CoffeeByUser<User> c7 = new CoffeeByUser<>(new User("정우성"));
        c7.ready();

        CoffeeByUser<VIPUser> c8 = new CoffeeByUser<>(new VIPUser("박서준"));
        c8.ready();

        System.out.println("---------------");
        orderCoffee("유재석");
        orderCoffee(36);

        System.out.println("----------");

        orderCoffee("한소희", "아메리카노");
        orderCoffee(37, "라떼");
    }

    public static <T> void orderCoffee(T name) {
        System.out.println("커피 준비 완료 : " + name);
    }

    public static <T, V> void orderCoffee(T name, V coffee) {
        System.out.println(coffee+ " 준비 완료 : " + name);
    }
}

 

래퍼 클래스

public class _03_WrapperClass {
    public static void main(String[] args) {
        // 래퍼(Wrapper) 클래스
        // int double float char
        Integer i = 123; // int i = 123;
        Double d = 1.0; //double d = 1.0;
        Character c = 'A'; //char c = 'A'

        System.out.println(i);
        System.out.println(d);
        System.out.println(c);

        System.out.println("---------------");

        System.out.println(i.intValue());
        System.out.println(d.intValue());
        System.out.println(c.charValue());

        System.out.println("------------");
        String s = i.toString();
        System.out.println(s);

				System.out.println("------------");


// 추가 예제
  
        Integer ii = new Integer(10); // 박싱
        int num1 = ii.intValue(); // 언박싱
        System.out.println(num1);

        Integer iii = 10;
        int num2 = iii;



        if (ii.equals(iii)) {
            System.out.println("같다.");
        } else {
            System.out.println("다르다.");
        }
        if (num1 == num2) { // 값
            System.out.println("같다.");
        } else {
            System.out.println("다르다.");
        }


        Character c1 = 'A'; // 오토박싱
        char ch = c1; // 오토언박싱
        System.out.println(ch);

    }
}

 

ArrayList

import java.util.ArrayList;
import java.util.Collections;

public class _04_ArrayList {
    public static void main(String[] args) {
        // 컬렉션 프레임워크 (List, Set, Map)
//        int[] array = new int[3];
//        array[0]=1;
//        array[1]=2;
//        array[2]=3;

        ArrayList<String> list = new ArrayList<>();

        // 데이터 추가
        list.add("유재석");
        list.add("조세호");
        list.add("김종국");
        list.add("박명수");
        list.add("강호동");

        // 데이터 조회 (인덱스기준)
        System.out.println(list.get(0));
        System.out.println(list.get(1));
        System.out.println(list.get(2));
        System.out.println(list.get(3));
        System.out.println(list.get(4));
        System.out.println("-----------");

        //삭제 (박명수씨가 이사)
        System.out.println("신청 학생 수 (이사 전) : " + list.size()); //5
        list.remove("박명수");
        System.out.println("신청 학생 수 (이사 후) : " + list.size()); //4
        System.out.println(list.get(3));
        System.out.println("-----------");

        System.out.println("남은 학생 후 (제외 전) : " + list.size()); //4
        list.remove(list.size() - 1);
        System.out.println("남은 학생 후 (제외 후) : " + list.size()); //3
        System.out.println("-----------");

        // 순회
        for (String s : list) {
            System.out.println(s);
//           for (int i = 0; i < list.size()-1; i++) {

        }
        System.out.println("------------");

        //변경 (수강권 양도)
        System.out.println("수강권 양도 전: " +list.get(0));
        list.set(0,"이수근");
        System.out.println("수강권 양도 후: "+ list.get(0));
        System.out.println("-------------");

        // 확인
        System.out.println(list.indexOf("김종국"));
        // 선착순 5명 내에 포함되어 있는가?
        if(list.contains("김종국")) {
            System.out.println("수강 신청 성공");
        }else{
            System.out.println("수강 신청 실패");
        }

        System.out.println("-----------");

        // 전체 삭제
        list.clear();
        if(list.isEmpty()) {
            System.out.println("학생 수 : " +list.size());
            System.out.println("리스트가 비었습니다.");
        }
        System.out.println("---------");

        // 다음 학기에 새로 공부를 시작
        list.add("유재석");
        list.add("조세호");
        list.add("김종국");
        list.add("박명수");
        list.add("강호동");

        // 정렬
        Collections.sort(list); 
        for(String s : list) {
            System.out.println(s);
        }
    }
}

 

LinkedList (1)

import java.util.LinkedList;

public class _05_LinkedList {
    public static void main(String[] args) {
        // 링크드 리스트
        LinkedList<String> list = new LinkedList<>();
        list.add("유재석");
        list.add("조세호");
        list.add("김종국");
        list.add("박명수");
        list.add("강호동");

        // 데이터 조회(인덱스)
        System.out.println(list.get(0));
        System.out.println(list.get(1));
        System.out.println(list.getFirst());
        System.out.println(list.getLast());

        System.out.println("------------");
        // 추가
        list.addFirst("서장훈");
        for(String s : list){
            System.out.println(s);
        }

        System.out.println("-----------");
        list.addLast("김희철");
        for(String s : list){
            System.out.println(s);
        }

        System.out.println("--------");

        System.out.println("학생 추가 전: " + list.get(1));
        list.add(1,"김영철");
        System.out.println("학생 추가 후 : " + list.get(1));
        System.out.println("학생 추가 후 : " + list.get(2));

    }
}

 

수업 이후 가져야할 Action item

  • ArrayList와 LinkedList를 알고 사용할 수 있다.
  • 이 둘의 특징과 차이를 안다. (기술 면접 시 java에서 알아야 할 부분)
  • WrapperClass에 대해서 안다.
  • 문법을 작성하고 사용하는 것에 익숙해 진다.
728x90
Comments