✿∘˚˳°∘°
15일차 : Generics / Collection - List, Set, Map 본문
2022/12/16
[ 1. Generics ] ==================================================================
기존방법
public class TestClass{
private String str;
private int num;
}
new TestClass();
public class TestClass<T>{ //제네릭쓸거라고 명시해주는것
private T data;
}
실행클래스에서 TestClass<자료형> = new TestClass<자료형> 하고 객체를 생성할때
자료형을 결정해서 <자료형>을 넣어서 지정
주의점 : 꼭 참조형으로 사용해야한다 - int(X) 기본형을 사용하고싶으면 wrapper class를 사용해야함(Integer)
Generics Type설정방법
1. <T> : 제한없음 모든타입 가능
2. <T extends A클래스> : A클래스와 그 자손클래스만 가능(상한제한)
3. <T super A클래스> : A클래스와 그 조상들만 가능(하한제한)
제네릭을 이용해서 클래스를 만들진않겟지만 제네릭이 적용된걸 사용을해야함(제네릭을 이용한 API가 많이잇다)
[ 기존 방법 ] -----------------------------------------------------------------------------------------------------------------------------------------------
[ 제네릭을 이용하여 사용하는 방법 ] -------------------------------------------------------------------------------------------------------
[ 2. Collection ] ==================================================================
자료구조를 담당하는 Framework
배열의 문제점 : 크기지정 후 변경X / 중간위치의 추가,삭제가 불편 / 한타입의데이터만 저장가능
Collection의 장점 : 크기제약X / 추가,삭제 정렬이 편하다 / 여러 타입 저장가능(객체타입만)
List : 순서를 유지하고 저장 / 중복저장가능 / 배열과 가장 유사한 형태 / ArrayList, Vector, LinkedList
Set : 순서를 유지하지않고 저장 / 중복저장불가 / HashSet, TreeSet
2 - 1) List - ArrayList
StudentMgr : 학생정보를 ArrayList에 저장하여
구현하기
pointMgr : 회원정보를 ArrayList에 저장하여 구현하기
2 - 2 ) Set - HashSet
자주 사용하지는 않지만 중복값을 체크할때 사용한다
2 - 3 ) Map - HashMap
[ 후기 ] ------------------------------------------------------------------------------------------------------------------------------------------
오늘 수업은 Generic이론 외에는 쉽고 재미있었다.
아직 <T>로 객체생성 시 자료형을 지정해주고, 종속클래스의 다형성관계는 이해가 덜되었지만 기본적인 이론은 다 이해할 수 있었다. 물론 막상 코드를 짤 때는 한번 막혀서 이전실습을 확인하긴했지만ㅎ
다 이해했다고 생각해도 백지에서 혼자 작성하다보면 뭘모르고있는지 알게된다. 복습할 때 좋은방법인듯!
배열을 사용할 때와 달리 StudentMgr / PointMgr 코드가 정말 간단해지고 쉽게작성이되어서 너무 신기하고 놀라웠다.
특히 삭제가 배열을 사용할 때는 나름 복잡했는데 ArrayList를 사용하니 너무 간단해져서 살짝 허무하기도하고 코드가 깔금해지는게 마음에 들었다.
오늘 실수한 점
1. PointMgr - vo / Grade.java를 만들 때 Grade<T>로 해야하는줄로 착각하고 혼자 어려운싸움을 하고있었다
'국비수업 > JAVA' 카테고리의 다른 글
17일차 : Network (0) | 2022.12.20 |
---|---|
16일차 : HashMap / Exception / IO (0) | 2022.12.19 |
14일차 : Object / API (0) | 2022.12.15 |
13일차 : 종속 / 다형성 / 추상클래스와 인터페이스 (0) | 2022.12.14 |
12일차 : 객체지향프로그래밍 - 회원(포인트)관리 프로그램 (0) | 2022.12.13 |