-
Java - MapJava 2018. 1. 25. 12:19반응형< Map >// HashMap은 Map Interface로 구현한 대표적 Map Collection이다// Key와 Value Type은 Class 및 Interface만 가능하다(int -> Integer)// Collection Interface를 구현하지 않기때문에 기존과는 조금 다른 method를// 사용한다. Key: value store는 순서가 없다 Type은 Key,Value 2개를 쓴다// 단일 값을 검색 할 경우 Key를 통해 Value를 찾는다// 모든 값을 가져 올 경우는 두가지 방법을 사용 한다.// 1. 모든 Key를 Set으로 가져와 key를 Itrator하는 방법// 2. Map(key,value)을 Set으로 가져와 key/value 단위로 iterator하는 방법
// 중복이 허용 되지만 특정일 경우만 가능 ex) 홍길동 100 홍길동 200 // 홍길동으로 찾으면 값이 200으로 덮어 씌워진다
// Key값은 중복이 안되서 값이 덮어 나온다.
// Value값은 중복 가능
// Tree구조는 들어갈 때 느리지만 검색이 빠르다.
< HashMap >import java.util.HashMap;public class HashMapMain {public static void main(String[] args) {// 맵 생성HashMap<String, Integer> map = new HashMap<>(); // 다이아몬드 연산자 사용 가능// 값 넣기 .put() 이용map.put("kim", 23);map.put("lee", 26); // 값 중복은 허용 가능map.put("park", 26);map.put("kim", 32); // Key중복은 허용이 안되서 마지막 값으로 덮어 나온다// 크기 출력System.out.println(map.size());// 특정 키로 값 출력System.out.println("kim의 나이 : "+map.get("kim"));// 값 삭제map.remove("lee");System.out.println(map.size());// map의 값을 하나씩 출력 방법 1// key들만 set으로 가져옴 -> iterator로 key를 하나씩 쪼갠다Set<String> keySet = map.keySet();Iterator<String> keyIter = keySet.iterator();while(keyIter.hasNext()){String key = keyIter.next(); // 하나씩int value = map.get(key); // keySystem.out.println(key + " : " + value);}// map의 값을 하나씩 출력 방법 2// map 자체를 set으로 가져옴 -> iterator로 k-v 형태로 하나씩 쪼갠다Set<Entry<String, Integer>> entrySet = map.entrySet();Iterator<Entry<String, Integer>> entryIter = entrySet.iterator(); // Map자체가 들어가서 Entrywhile(entryIter.hasNext()) {Entry<String, Integer> entryMap = entryIter.next();System.out.println(entryMap.getKey()+" : "+entryMap.getValue());}// 비었는지 확인if(!entrySet.isEmpty()) { // 안 비어있으면System.out.println("비우기");entrySet.clear();System.out.println("Map의 크기 : " + map.size());}}}< HashTable >// HashTable도 ArrayList, Vector의 차이 처럼// HashMap과 Thread Safe의 차이만 있다.// HashMap과 동일한 method를 사용 한다.import java.util.Hashtable;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;import java.util.Set;public class HashTableMain {public static void main(String[] args) {// HashMap과 사용 방법 동일Map<String, Integer> map = new Hashtable<>(); // 다이아몬드 연산자, 옆에 참조// 이름, 점수map.put("강영빈", 25);map.put("강일빈", 35);map.put("강이빈", 45);map.put("강삼빈", 55);map.put("강사빈", 65);map.put("강오빈", 75);map.put("강육빈", 85);map.put("강칠빈", 95);map.put("강헝빈", 95);map.put("강팔빈", 15);map.put("강구빈", 100);// 특정 키가 있는지 확인System.out.println(map.containsKey("강삼빈")); // boolean로 반환// 특정 값이 있는지 확인System.out.println(map.containsValue(95)); // boolean로 반환// keySetSet<String> keySet = map.keySet();Iterator<String> keyIter = keySet.iterator();while(keyIter.hasNext()) {System.out.println(keyIter.next());}// EntrySet, 특정 값을 통해 키를 찾기Set<Entry<String, Integer>> entrySet = map.entrySet();Iterator<Entry<String, Integer>> entryIter = entrySet.iterator();while(entryIter.hasNext()) {Entry<String, Integer> entryMap = entryIter.next();if(entryMap.getValue().equals(95)){System.out.println("95의 키는 -> "+entryMap.getKey());}// System.out.println(entryMap.getKey() + " : " + entryMap.getValue());}}}반응형'Java' 카테고리의 다른 글
Java - 정규표현식 (0) 2018.01.26 Java - Stack, Queue (0) 2018.01.25 Java - Collection (0) 2018.01.25 Java - Generic Method (0) 2018.01.24 Java - Generic (0) 2018.01.24 댓글