대부분의 최신 프로그래밍 언어는 제네릭(Generic) 개념을 제공함자바에서 제네릭을 제대로 이해하는 것은 어렵기 때문에, 먼저 제네릭을 전혀 사용하지 않고 코드를 작성한 후 코드에 제네릭을 점진적으로 도입기존 방식으로는 해결이 어려운 코드 중복을 제네릭이 어떻게 해결
제네릭을 사용하면 코드 재사용과 타입 안전성이라는 장점을 한 번에 잡을 수 있음
제네릭의 핵심은 사용할 타입을 미리 결정하지 않는다는 점

이름, 크기 정보를 가지는 부모 클래스 toString()을 IDE를 통해서 오버라이딩함 Animal을 상속 받음 부모 클래스에 정의된 생성자가 있기 때문에 맞추어 super(name, size)를 호출 Animal을 상속 받는 클래스 하나 더 생성 객체를 보관할 수 있는 제네릭 클래스 실행결과 Box 제네릭 클래스에 각각의 타입에 맞는 동물을...
문제1 - 제네릭 기본 문제 설명 다음 코드와 실행 결과를 참고해서 Container 클래스를 만들어라 Container 클래스는 제네릭을 사용해야 함 실행 결과 정답 문제2 - 제네릭 기본 문제 설명 다음 코드와 실행 결과를 참고해서 Pair 클래스를 만들어라
동물 병원 생성요구사항 : 개 병원은 개만 받을 수 있고, 고양이 병원은 고양이만 받을 수 있음개 병원은 내부에 Dog 타입을 가짐checkup() : 개의 이름과 크기를 출력하고, 개의 sound() 메서드를 호출함bigger() : 다른 개와 크기를 비교하고, 둘
특정 메서드에 제네릭을 적용하는 제네릭 메서드앞서 살펴본 제네릭 타입과 살펴볼 제네릭 메서드는 둘 다 제네릭을 사용하기는 하지만 서로 다른 기능을 제공함
제네릭 타입을 조금 더 편리하게 사용할 수 있는 와일드 카드(wildcard) - 와일드카드라는 뜻은 컴퓨터 프로그래밍에서 \*, ?와 같이 하나 이상의 문자들을 상징하는 특수 문자를 뜻함 - 쉽게 이야기해서 여러 타입이 들어올 수 있다는 뜻
제네릭은 자바 컴파일 단계에서만 사용되고, 컴파일 이후에는 제네릭 정보가 삭제됨 - 제네릭에 사용한 타입 매개변수가 모두 사라지는 것
다음 코드와 실행 결과를 참고해서 UnitUtil 클래스를 만들어라UnitUtil.maxHp() 메서드의 조건은 다음과 같다.두 유닛을 입력 받아서 체력이 높은 유닛을 반환한다. 체력이 같은 경우 둘 중 아무나 반환해도 된다.제네릭 메서드를 사용해야 한다.입력하는 유닛

배열과 같이 여러 데이터(자료)를 구조화해서 다루는 것을 자료 구조하고 함자바는 배열 뿐만 아니라, 컬렉션 프레임워크라는 이름으로 다양한 자료구조를 제공함컬렉션 프레임워크와 자료 구조를 설명하기 전에 먼저 자료 구조의 가장 기본이 되는 배열의 특징을 알아보는 강의 세션

배열의 경우 다음 2가지 불편함이 있음배열의 길이를 동적으로 변경할 수 없음데이터를 추가하기 불편함데이터를 추가하는 경우 직접 오른쪽으로 한 칸씩 데이터를 밀어야함배열의 불편함을 해소하고 동적으로 데이터를 추가할 수 있는 자료구조를 List라고 함순서가 있고, 중복을
앞서 만든 MyArrayList는 Object를 입력받기 때문에 아무 데이터나 입력할 수 있고, 또 결과로 Object를 반환함따라서 필요한 경우 다운 캐스팅을 해야하고, 또 타입 안전성이 떨어지는 단점이 있음numberList에는 숫자만 입력하기를 기대했지만, Obj
1. 노드와 연결 배열 리스트의 단점 배열 리스트는 내부에 배열을 사용해서 데이터를 보관하고 관리함 배열의 사용하지 않는 공간 낭비 > - 이로인해 배열은 필요한 크기를 미리 확보해야 함 데이터가 얼마나 추가될지 예측할 수 없는 경우 나머지 공간은 사용되지 않고 낭비됨 배열의 중간에 데이터 추가 > - 배열의 앞이나 중간에 데이터를 추가하면 추가...

연결 리스트는 배열 리스트의 단점인 메모리낭비, 중간위치의 데이터 추가에 대한 성능 문제를 어느정도 극복할 수 있음순서가 있고, 중복을 허용하는 자료구조를 리스트라고 함연결 리스트도 앞서 구현한 MyArrayList처럼 모두 같은 리스트임리스트의 내부에서 배열을 사용하
1. 인터페이스 도입 >- 다형성과 OCP 원칙을 가장 잘 활용할 수 있는 곳 중 하나가 바로 자료 구조 List 자료구조 순서가 있고, 중복을 허용하는 자료 구조를 리스트라고 함 ArrayList와 LinkedList 공통 기능을 인터페이스로 뽑아서 추상화하면 다

순서가 있고 중복을 허용하는 자료구조 자바의 컬렉션 프레임워크가 제공하는 가장 대표적인 자료 구조가 리스트 Collection 인터페이스는 java.util 패키지의 컬렉션 프레임워크의 핵심 인터페이스 중 하나

Set은 유일한 요소들의 컬렉션특징유일성 : 셋에는 중복된 요소가 존재하지 않음셋에 요소를 추가할 때, 이미 존재하는 요소면 무시함순서미보장 : 대부분의 셋 구현에서는 요소들의 순서를 보장하지 않음즉, 요소를 출력할 때 입력 순서와 다를 수 있음빠른 검색 : 셋은 요소

add(value) : 셋에 값을 추가한다. 중복 데이터는 저장하지 않는다.contains(value) : 셋에 값이 있는지 확인한다.remove(value) : 셋에 있는 값을 제거한다buckets : 연결 리스트를 배열로 사용한다.배열안에 연결 리스트가 들어있고,

Member의 경우 회원의 id가 같으면 논리적으로 같은 회원으로 표현할 수 있음따라서 회원 id를 기반으로 동등성을 비교하도록 equals를 재정의해야 함여기에 hashCode()도 같은 원리가 적용됨회원 id가 같으면 논리적으로 같은 회원으로 표현할 수 있음따라서

셋은 중복을 허용하지 않고, 순서를 보장하지 않는 자료구조Collection 인터페이스는 java.util패키지의 컬렉션 프레임워크의 핵심 인터페이스 중 하나이 인터페이스는 자바에서 다양한 컬렉션, 즉 데이터 그룹을 다루기 위한 메서드를 정의함Collection 인터페

순회1 - 직접 구현하는 Iterable, Iterator 자료 구조에서 순회는 자료 구조에 들어있는 데이터를 차례대로 접근해서 처리하는 것 다양한 자료 구조가 있고, 각각의 자료 구조마다 데이터를 접근하는 방법이 모두 다름 예를 들어서 배열 리스트는 index를 size까지 차례로 증가하면서 순회해야 하고, 연결 리스트는 node.next를 사용해...
순회2 - 향상된 for문 Iterable과 향상된 for문 Iterable, Iterator를 사용하면 또 하나의 장점을 얻을 수 있음 MyArrayMain.main()에 다음 코드를 추가하고 실행 실행 결과 for-each 문으로 불리는 향상된 for문은 자료
정렬1 - Comparable, Comparator 데이터 정렬 실행 결과 Arrays.sort()를 사용하면 배열에 들어있는 데이터를 순서대로 정렬할 수 있음 정렬 알고리즘 정렬은 아래와 같은 방식으로 이루어짐 맨 앞 두 데이터를 비교한 후, 왼쪽이 더 크면 둘을 교환함 처음부터 끝까지 비교하면 마지막 항목은 가장 큰 값이 됨 ![](http...