학원/강의
*25일차
pringspring
2022. 2. 28. 10:41
@Map
*정의
- 키(key)와 값(value)으로 구성
- 키,값 모두 객체이다.
- key : 중복 저장 X → set 방식
- value : 중복 저장 O → list 방식
- key가 중복되는 경우에 기존에 있는 key에 해당 값을 덮어쓴다. (set과 다른점)
- 구현 클래스 : HashMap(사용)/Table , LinekedHashMap(사용) , Properties(사용) , Treemap(사용)
- 저장된 순서는 신경 쓰지 않는다.
@Properties
*정의
- key와 value를 String 타입으로 제한한 Map 컬렉션.
- *.properties파일을 읽어 들일 때 사용
- 설정값 처리할 때 좋음
*properties 파일
- 옵션정보, db연결정보,다국어정보를 기록해 txt파일 활용
- app에서 주로 변경이 잦은 문자열을 저장하여 관리하기 때문에 유지보수가 편리하다.
- key와 value가 '='로 연결되어 있는 txt파일
@XML
*정의
- 사용자 정의 태그 문서
- eXtensible Markup Language
@Generics
*정의
- 컬렉션 클래스를 이용해 객체를 저장할 때 저장할 객체(클래스타입)을 제한하는 기능
- 한가지 종류의 클래스만 저장할 수 있게 해 놓은 기능
*왜 사용하는가?
- 컴파일에서 잘못된 타입을 사용할 수 있는 가능성을 제거함
- 컬렉션에 저장된 여러 종류의 객체를 꺼내서 사용할 때 객체의 종류에 따라 매번 형변환하는 복잡한 코드 제거
- 컬렉션,람다식(함수적 인터페이스),스트림,NIO에서 널리 사용
*장점
- 컴파일시 강한 타입 체크 가능하다. (실행시 에러 방지)
- Object타입의 요소를 지정타입으로 형변환 할 필요가 없다.
@HashMapStudy
#map 사용(구조)
- map 선언하기
- 요소 추가하기(put) : put은 object를 반환한다. (3번 내용)
- 기존 요소가 있다면 삭제된 요소를 반환
- 요소 가져오기(get)
- 요소 삭제하기(remove)
- 요소 전체 개수 출력
- toString override
#다른 map 병합
- Map 선언
- map1에 map2 추가
- 다른 map을 인자로 하는 생성자
#Map 요소 순회열람
- keySet : key를 별도의 Set으로 반환
- entrySet : entry(key,value)를 별도의 Set으로 반환
- entry : key/value 한쌍의 요소
----->toString이 아닌 하나씩 꺼내서 보겠다.
----->map은 순서대로 접근할 수 없다.(=index가 없다)
#학생객체관리
- Map<K, Student> ←V에 Student 대입
- vaule 의 고유값을 꺼내 key값(student #no) 으로 사용
- 여기서 고유한건 학생번호 =>그래서 key값이 맞음 (이름은 중복되니까)
- 학생번호 n번, 이름은 [ㅇㅇㅇ]입니다. 출력하기 (1.keyset 2.entryset)
- " (1.2를 iterator로 바꿔서 순회하기)
#contain Key/Value : 이 key/value가 포함되어 있는가??
@Properties
- K, V의 타입으로 String,String 으로 단순화 시킨 컬렉션클래스
- String,String 고정
- 설정정보 표현에 최적화 된 타입
- properties는 generic 없다.
#Properties객체 -> 설정파일 출력
#설정파일 입력 -> Properties객체
@Generic
- Type safety : 해당 타입의 요소만 추가가능
- 꺼내올 때 해당 타입 리턴 (형변환 안해도 됨)
#Type safety
#generic class / method : 메소드레벨의 타입변수 사용
- generic은 두가지 레벨에서 사용가능
- 1.class : 클래스 레벨에 타입변수 사용 (=test1)
- 2.method : 메소드 레벨에 타입변수 사용 (=test2)
-------------------------------------------------------------------------------
*generic 타입 변수
- T | Type
- E | Element
- K | Key
- V | Value
**
- static 자원(필드/메소드)에는 클래스 레벨의 제네릭 타입변수 사용 X
=>객체 생성 전 타입변수의 타입을 지정할 수 없기 때문이다.
- 제네릭 메소드로 처리하면 가능
- static메소드는 제네릭 메소드만 사용가능
- 리터타입 앞에 타입변수 선언
- 클래스 레벨의 타입변수 T와 다른 지역타입변수 (메소드 안에서만 사용가능)
요소를 인자로 받아서 Box객체 생성, 필드 설정후 리턴(Box파일)
**