728x90
HashMap : 가장 많이 쓰는 맵
TreeMap : 정렬가능
Properties : key와 value를 String으로 제한시켜놓은 Map구조의 컬렉션
put(K key, V value):V
요소 추가
get(Object key) : v
key값에 맞는 'value값 반환'
remove(Object key):V
remove(Object key, Object value):default boolean
keySet():Set<K>
맵에 있는 key들을 set에 담아 반환
entrySet():Set<Map.Entry<K,V>>
map에 있는 entry들을 set 담에 반환(키와 값의 쌍을 set에 담아 반환)
entry 의미 : 키와 값을 묶은 것(키와 값의 쌍)
// Properties prop = new Properties();
// key와 value를 String으로 제한시켜놓은 Map구조의 컬렉션
Properties prop = new Properties();
prop.setProperty("a","aa");
prop.setProperty("b","bb");
System.out.println(prop); // {b=bb, a=aa}
// 순서가 앞에서부터 추가 되나?
prop.setProperty("c","cc");
System.out.println(prop); // {b=bb, a=aa, c=cc}
System.out.println(prop.getProperty("a")); // aa <- map형태가 아닌 str
System.out.println(prop.containsKey("a")); // true
// 1.HashMap
// put(K key, V value):V
// 반환타입 : value
HashMap<String, Snack> hm = new HashMap<>();
hm.put("a",new Snack("단맛",10));
hm.put("b",new Snack("짠맛",10));
System.out.println(hm); // {a=Snack{flavor='단맛', price=10}, b=Snack{flavor='짠맛', price=10}}
HashMap<String,Snack> hm2 = new HashMap<>(hm);
System.out.println(hm2); // {a=Snack{flavor='단맛', price=10}, b=Snack{flavor='짠맛', price=10}}
// HashMap<String, String> hm3 = new HashMap<>(hm2);
// 밸류가 Snack인데 String에 넣으려고 해서 에러 발생
// 2.containsKey(Object key)
// 키나 값이 들어가 있는지를 확인하는 메소드
// containsKey(Object key):boolean
// containsValue(Object value):boolean
hm.containsKey("a");
hm.containsKey("b");
System.out.println(hm.containsKey("a")); // true
System.out.println(hm.containsKey("b")); // true
System.out.println(hm.containsKey("c")); // false
// 3.get()
// get(Object key) : v
// key값에 맞는 'value값 반환'
System.out.println(hm.get("a")); // Snack{flavor='단맛', price=10}
// 밸류인 Snack 객체에서 두 인자인 flavor와 price가 출력됨
System.out.println(hm.get("b")); // Snack{flavor='짠맛', price=10}
System.out.println(hm.get("c")); // null <-없을 경우 null반환
System.out.println();
// 4-1.remove(Object key):V
// 4-2.remove(Object key, Object value):default boolean
System.out.println(hm2.remove("b")); // Snack{flavor='짠맛', price=10}
System.out.println(hm2); // {a=Snack{flavor='단맛', price=10}}
System.out.println(hm2.remove("a",new Snack("단맛",10))); // true
System.out.println(hm2); // {}
// 5.keySet() & entrySet()
// keySet()
// keySet():Set<K>
// 맵에 있는 key들을 set에 담아 반환
// 방법1
System.out.println("keyset() : "+hm.keySet()); // [a, b]
System.out.println(hm.keySet());
// 방법2
// set의 [] 없이 안에 값만 뽑고 싶다면 방법2 사용
// Set객체 생성하여 map의 keySet()를 넣어주고 이를 다시 Iterator에 넣어서
// while + hasNext()로 읽어들인다.
// set이기 때문에 찍으면 기본적으로 key값이 나옴
// value값을 읽어오고 싶다면 원본 데이터인 map에서 get()를 통해 끌어오면된다
Set<String> set = hm.keySet();
Iterator<String> it = set.iterator();
while(it.hasNext()){
String kset = it.next();
System.out.println(kset); // a
System.out.println("밸류값 : "+hm.get(kset)); // 밸류값 : Snack{flavor='단맛', price=10}
}
// entrySet()
// entrySet():Set<Map.Entry<K,V>>
// map에 있는 entry들을 set 담에 반환(키와 값의 쌍을 set에 담아 반환)
// entry 의미 : 키와 값을 묶은 것(키와 값의 쌍)
// 방법1
hm.entrySet();
System.out.println(hm.entrySet());
// [a=Snack{flavor='단맛', price=10}, b=Snack{flavor='짠맛', price=10}]
System.out.println();
// 방법2
// set의 [] 없이 안에 값만 뽑고 싶다면 방법2 사용
Set<Map.Entry<String, Snack>> setMap = hm.entrySet();
Iterator<Map.Entry<String, Snack>> itEnt = setMap.iterator();
while(itEnt.hasNext()){
Map.Entry<String, Snack> a = itEnt.next();
System.out.println(a);
// a=Snack{flavor='단맛', price=10}
// b=Snack{flavor='짠맛', price=10}
}
// size():int
System.out.println(hm.size()); // 2
// TreeMap
// 정렬 가능
// putAll()
// putAll(Map<? extends K,? extends V> m):void
// 다른 맵의 값을 추가
TreeMap<String, Snack> tm = new TreeMap<>(hm);
System.out.println(tm.get("a")); // Snack{flavor='단맛', price=10}
System.out.println(tm);
// {a=Snack{flavor='단맛', price=10}, b=Snack{flavor='짠맛', price=10}}
tm.putAll(hm); // 중복 안됐음
System.out.println(tm);
tm.put("a",new Snack("ㄱ",10));
System.out.println(tm); // {a=Snack{flavor='ㄱ', price=10}, b=Snack{flavor='짠맛', price=10}}
tm.put("c", new Snack("ㄷ",10));
System.out.println(tm); // {a=Snack{flavor='ㄱ', price=10}, b=Snack{flavor='짠맛', price=10}, c=Snack{flavor='ㄷ', price=10}}
// remove(Object key):V
// remove(Object key, Object value):boolean
tm.remove("c");
tm.remove("b",new Snack("짠맛",10));
tm.remove("a",new Snack("짠맛",10)); // 다르게 적으면 삭제x
System.out.println(tm); // {a=Snack{flavor='ㄱ', price=10}}
// replace(K key, V oldValue, V newValue):boolean
tm.replace("a",new Snack("단맛",10));
System.out.println(tm); // {a=Snack{flavor='단맛', price=10}}
tm.replace("a",new Snack("단맛",10),new Snack("단단맛",10));
System.out.println(tm); // {a=Snack{flavor='단단맛', price=10}}
TreeMap : 정렬가능
728x90
반응형
'small steps > 1일 1코딩 - 코딩을 내 몸처럼' 카테고리의 다른 글
[1일1코딩][Oracle] 직무부트캠프 comento 3주차 과제 : 3-1)~4)번 (0) | 2022.09.27 |
---|---|
[1일1코딩][Java] 세자리 숫자의 곱셈 과정의 수 구하기 (0) | 2022.09.26 |
[1일1코딩][Java] collection List 9th : ListIterator (1) | 2022.09.24 |
22.09.24 운동기록 (0) | 2022.09.24 |
[1일1코딩][Java] collection List 8th (1) | 2022.09.23 |