✿∘˚˳°∘°

15일차 : Generics / Collection - List, Set, Map 본문

국비수업/JAVA

15일차 : Generics / Collection - List, Set, Map

_HYE_ 2022. 12. 16. 18:17

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가 많이잇다)

 

전역변수 / 생성자
getter/setter

 

 

[ 기존 방법 ] -----------------------------------------------------------------------------------------------------------------------------------------------

Animal.java
Bear.java / Animal종속
Tiger.java / Animal종속

 

AnimalMgr.java
실행클래스

[ 제네릭을 이용하여 사용하는 방법 ] -------------------------------------------------------------------------------------------------------

<T>
실행클래스

[ 2. Collection ] ==================================================================

자료구조를 담당하는 Framework

배열의 문제점 : 크기지정 후 변경X / 중간위치의 추가,삭제가 불편 / 한타입의데이터만 저장가능
Collection의 장점 : 크기제약X / 추가,삭제 정렬이 편하다 / 여러 타입 저장가능(객체타입만)

 

List : 순서를 유지하고 저장 / 중복저장가능 / 배열과 가장 유사한 형태 / ArrayList, Vector, LinkedList

Set : 순서를 유지하지않고 저장 / 중복저장불가 / HashSet, TreeSet

 

2 - 1) List - ArrayList

ArrayList와 배열의 차이

StudentMgr : 학생정보를 ArrayList에 저장하여

구현하기

vo / Student.java
controller / StudentMgr - 생성자
학생정보를 입력받아 AraayList에 추가하는 메소드
학생 정보를 출력하는 메소드
입력한 학생이름을 받아 ArrayList에 존재하는지 확인하는 학생찾기 메소드
학생찾기 메소드를 이용하여 입력한 학생의 정보를 출력

 

학생정보수정 메소드
학생정보삭제 메소드

pointMgr : 회원정보를 ArrayList에 저장하여 구현하기

vo / Grade(부모클래스)
vo / Silver
vo / Gold
vo / Vip
controller / 전역변수와 생성자(초기값설정)
controller / main()

 

이름을 받아서 ArrayList에 동일한 이름이 있는지 찾는 메소드

2 - 2 ) Set - HashSet 

자주 사용하지는 않지만 중복값을 체크할때 사용한다

 

 

2 - 3 ) Map - HashMap

 

[ 후기 ] ------------------------------------------------------------------------------------------------------------------------------------------

오늘 수업은 Generic이론 외에는 쉽고 재미있었다.

아직 <T>로 객체생성 시 자료형을 지정해주고, 종속클래스의 다형성관계는 이해가 덜되었지만 기본적인 이론은 다 이해할 수 있었다. 물론 막상 코드를 짤 때는 한번 막혀서 이전실습을 확인하긴했지만ㅎ

다 이해했다고 생각해도 백지에서 혼자 작성하다보면 뭘모르고있는지 알게된다. 복습할 때 좋은방법인듯!

배열을 사용할 때와 달리 StudentMgr / PointMgr 코드가 정말 간단해지고 쉽게작성이되어서 너무 신기하고 놀라웠다.

특히 삭제가 배열을 사용할 때는 나름 복잡했는데  ArrayList를 사용하니 너무 간단해져서 살짝 허무하기도하고 코드가 깔금해지는게 마음에 들었다.

 

오늘 실수한 점

1. PointMgr - vo / Grade.java를 만들 때  Grade<T>로 해야하는줄로 착각하고 혼자 어려운싸움을 하고있었다

Comments