※ 개인적인 개발 수업 정리글입니다. 꾸준히 정리할 예정이고 틀린 부분이 있다면 언제든지 댓글 환영입니다.
컬렉션 1) 인터페이스 Set - Hashset클래스
Person -기본생성자,전체생성자, 겟셈, 투스트링 만들기.
private String name;
private int age;
private String address;
//멤버변수
SetTest3
SetTest4
<<인터페이스 Set>> - 순서X, 중복불가
- HashSet 클래스 : Set에 객체저장. Hash를 사용하여 처리속도가 빠름.
- LinkedHashSet 클래스 : HashSet과 거의 같음. 차이점은 Set에 추가되는 순서를 유지.
- TreeSet 클래스 : 객체의 Hash값에 의한 오름차순의 정렬 유지.
* +++
프로젝트 11Day4
컬렉션 2) 인터페이스 List
<<인터페이스 List>> - 순서O, 중복가능
- List 클래스 : List의 요소는 순서를 가짐.
- ArrayList 클래스 : List에서 객체를 얻어내는데 효율적. 동기화 제공X.
- LinkedList 클래스 : List에서 앞뒤의 데이터를 삽입,삭제하는데 효율적. 동기화 제공X
- Vector 클래스 : 기본적으로 ArrayList와 동등하지만, 동기화 제공O. 가장 성능이 좋지않음.
프로젝트 11Day5의 ListTest클래스
프로젝트 11Day5의 ListTest2 클래스
프로젝트 11Day5의 ListTest3 클래스
프로젝트 11Day5의 ListTest4 클래스
프로젝트 11Day5의 ListTest5 , Person, PersonAgeSortComparator 클래스
┌PersonAgeSortComparator ┐
컬렉션 3) 인터페이스 Map
- key 랑 value 사용.
==>key는 인덱스 같은건데, 인덱스는 숫자만 0부터 가능하자나. 근데 key를 다른숫자나 글자로 주는거
-크게 HashMap 과 Hashtable 있음. 우린 주로 HashMap만 쓸거임!!!
-Hashtable은 null값 허용 안함
<<인터페이스 Map>>
- HashMap 클래스 : Map에 key를 저장. hash를 사용하여 성능이 좋음. 저장순서 유지X. 오로지 하나의 null키?
- LinkedHashMap 클래스 : HashMap과 거의 같음. 저장순서유지O.
- HashTable 클래스 : 동기화 제공O. null key와 null value 저장불가.
★★★<제네릭스>★★★
-컬렉션 선언 시, < > 안에 매개변수 타입을 선언해서 전달.
< Map에 타입을 제한해서, 특정 타입만 받도록 함. >
ex) Map<Integer, Integer> map= new HashMap<Integer, Integer>();
map.put( 10, 100 );
System.out.println( map.get(10) );
=================> key, value 전부 int 타입만 받음
ex) Map<String, String> map= new HashMap<String, String>();
ex) Map<String, Object> map= new HashMap<String, Object>();
ex) Map<Long, String> map= new HashMap<Long, String>();
< Map에서 쓸 수 있는 기본 함수>
- List 타입의 변수.add( idx, 값 ) ; ==>데이터 추가
==> 이미 해당 인덱스에 데이터가 있어도, idx와 값을 적어서 추가하고, 기존 데이터는 하나씩 밀어짐.
- Map 타입의 변수.put( key값, value값 ) ; ==>데이터 추가
==> 기본적으로는 데이터 추가인데, 이미 있으면 밀리는게 아니라, 기존 데이터 위에 덮어씌워짐.
- List 타입의 변수.get( idx ) ; ==>데이터 추출
==> List는 순서가 있어서, .get( idx ) 로 원하는 값 추출가능. idx=0부터
- Map 타입의 변수.get( value값 ) ; ==>데이터 추출
==> 없으면 null값
- <set,list타입의> 변수.size( ); ==> 데이터 갯수
- < Map 타입의> 변수.size( ); ==> 데이터 갯수
- Map 타입의 변수.containKey( key값 ); ==> key값이 있는지?
- Map 타입의 변수.containValue( value값 ); ==> value값이 있는지?
- Map 타입의 변수.replace( key값, value값 ); ==> 추가가 아니고, 이미 있는거를 수정
- List 타입의 변수.remove( idx or "데이터" ) ; ==>데이터 삭제
==> 인덱스나 데이터만 입력해도, 데이터 삭제 가능
- Map 타입의 변수.remove( key값 ) ; ==> 데이터 삭제
==> key값, value값 둘다 삭제
★ Map타입의 변수.keySet() : 모든 key값들만, Set타입의 변수keys에 저장.
Set <String> keys = map.keySet();
// Set타입 keys에, Map타입 map의 key값들만을, <String>타입으로 저장.
프로젝트 11Day6_Map 의 클래스 MapTest
프로젝트 11Day6_Map 의 클래스 MapTest2 의
HashMap
프로젝트 11Day6_Map 의 클래스 MapTest2 의
Hashtable
프로젝트 11Day6_Map 의 클래스 MapTest4 의
HashMap ★★★
■ keyset ( ) 함수
key만 얻어오게 해주는 함수가 keyset ( )
프로젝트 11Day6_Map 의 클래스 MapTest4 의
★★★꼭 기억하기★★★
Set<String> keys = map.keySet( ) ;
// Set타입 keys에, Map타입 map의 'key값들만'을, <String>타입으로 저장
System.out.println(keys) ; // [one, two, three]
★★★★★★★★★★★★★★★★
프로젝트 11Day6_Map 의 클래스 Person, MapTest5
Person - 기본생성자,전체생성자, 겟셈, 투스트링 만들기.
private String name;
private int age;
private String address;
//멤버변수
MapTest5
프로젝트 11Day6_Map 의 클래스 MapTest6
★★꼭 기억하기★★
value값에, = ArrayList타입 list를, <Person>타입으로 저장
HashMap타입 map에, key값=String타입 : value값=list, list2 를 저장할건데,
list, list2 가 [ ArrayList <Person> ] 타입이니까,
HashMap타입 map에, = HashMap타입으로 새로 생성된 객체를 ,
< String , ArrayList <Person> >타입으로 저장...
이라고 적는거임
★★★위의 표부터 이 예제까지, 꼭 기억하기★★★
프로젝트 11Day6_Map 의 클래스 MapTest7
완전 복잡해보이는데, 회사에서 쓰일거로 생각하면 은근 쉬움
ArrayList 타입의 list | '삼성 휴대폰 전세계 목록' |
HashMap <String, Phone > 타입의 Korea(=map) | |
< String, | = key값 = 휴대폰종류. key="갤럭시", key="플립" ... |
Phone> | =value값= (key에 해당되는 휴대폰종류의) Phone ( '폰 이름', '판매가' ', '용량' ) 생성자 객체 |
Phone ( String name, Long price, String capacity ) { // Phone 클래스의 생성자 중 하나. this.name= name; this.price=price; this.capacity =capacity ; } ex) Phone1( "갤럭시" , 500000 , "2GB" ) Phone2( "플립" , 900000 , "1GB" ) <HashMap> Korea에 <String> key= "갤럭시" : <Phone> value= Phone( "A" , "a" , 2 ) <String> key= "플립" : <Phone> value= Phone( "B" , "b" , 3 ) 저장. 근데 로컬라이징하면 판매하는 폰 종류가 다를 수도 있겠지? <HashMap> Korea(=map) <HashMap> Europe(=map) <HashMap> Africa(=map) 를 <ArrayList> list = 전세계 휴대폰 목록에 넣음. |
스타벅스로 해보면...?
ArrayList 타입의 list | '스타벅스 라떼 메뉴' |
HashMap <String, Latte > 타입의 Beverage | Latte이라는 클래스가 따로 있겄지.. 이게 DTO? |
< String, | = key값 = 라떼 종류. key="바닐라라떼", key="소이라떼", key="돌체라떼" |
Latte> | =value값= (key에 해당되는 라떼종류의) '우유 종류' '소스 종류' '소스 펌프수' |
Latte( String milk , String source , int num ) { // Latte 클래스의 생성자 중 하나. this.milk=milk; this.source=source; this.num=num; } ex) Latte( "바닐라라떼" , "바닐라 소스", 3 ); Latte( "소이라떼" , "바닐라 소스", 2 ); Latte( "돌체라떼" , "돌체 소스", 3 ); <HashMap> Beverage1에 <String> key="바닐라라떼" : <Latte> value = Latte( "바닐라라떼" , "바닐라 소스", 3 ); <String> key="소이라떼" : <Latte> value = Latte( "소이라떼" , "바닐라 소스", 2 ); <String> key="돌체라떼" : <Latte> value = Latte( "돌체라떼" , "돌체 소스", 3 ); 저장. 근데 라떼 말고 그냥 초코라떼랑, 그린티라떼도 있어서 걔네는 <HashMap> Beverage2에 저장 <HashMap> Beverage1 , <HashMap> Beverage2 를 <ArrayList> list에 담음... 이런거 아닐까;; |
+ Iterator로도 만들어보기
프로젝트 11Day6_Map 의 클래스 MapTest8
Properties
프로젝트 11Day6_Map 의 클래스 MapTest9
책 [ 실습 10-13 ] properties이용해서 시스템 환경변수 얻기
Enumeration<?> enu=props.propertyNames( ) ; ★외우기★
//String String의 Properties에서 key값들만 가져오기
꼭 책에도 메모해두기
'Govern > Eclipse SE -상속,클래스,타입' 카테고리의 다른 글
07-26(월) 2.제네릭/컬렉션/ Iterator (0) | 2021.07.27 |
---|---|
07-26(월) 1.사용자예외클래스 throws/throw (0) | 2021.07.27 |
07-23(금) 2.클래스들,Array API, 예외처리조금 (0) | 2021.07.27 |
07-23(금) 1.커플링 중첩클래스 (0) | 2021.07.23 |
07-22(목) 다형성 instanceof 추상클래스 인터페이스 (0) | 2021.07.22 |