학원/강의

*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 사용(구조)

 

  1. map 선언하기
  2. 요소 추가하기(put)  : put은 object를 반환한다. (3번 내용)
  3. 기존 요소가 있다면 삭제된 요소를 반환
  4. 요소 가져오기(get)
  5. 요소 삭제하기(remove)
  6. 요소 전체 개수 출력
  7. toString override

 

 

#다른 map 병합

  1. Map 선언
  2. map1에 map2 추가
  3. 다른 map을 인자로 하는 생성자

 

 

 

#Map 요소 순회열람

  1. keySet : key를 별도의 Set으로 반환
  2. entrySet : entry(key,value)를 별도의 Set으로 반환
  3. entry : key/value 한쌍의 요소

----->toString이 아닌 하나씩 꺼내서 보겠다.

----->map은 순서대로 접근할 수 없다.(=index가 없다)

 

 

 

#학생객체관리

  1. Map<K, Student> ←V에 Student 대입
  2. vaule 의 고유값을 꺼내 key값(student #no) 으로 사용
  3. 여기서 고유한건 학생번호 =>그래서 key값이 맞음 (이름은 중복되니까)
  4. 학생번호 n번, 이름은 [ㅇㅇㅇ]입니다. 출력하기 (1.keyset 2.entryset)
  5. " (1.2를 iterator로 바꿔서 순회하기)

keyset을 이용
entryset 이용
keyset &amp;amp;amp;amp;rarr; Iterator
entryset &amp;amp;amp;amp;rarr; 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파일)

**

 

정리