2020.10.26 고급자바 수업 노트 HashMap

 package kr.or.ddit.basic;


import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.Set;





public class MapTest {


public static void main(String[] args) {

/*

* Map ==> key 값과 value 값을 한 쌍으로 관리하는 객체 

* **key 값은 중복을 허용하지 않고 순서 (index) 가 없다. (Set의 특징을 갖는다. ) 

* value 값은 중복을 허용한다. 

*/

HashMap<String, String> map = new HashMap<>();

//제네릭타입을 <>에 쓰는데  앞에는 key 타입 뒤에는 value 타입으로 쓴다. 

//자료 추가하기  ==> put(key 값, value 값 ) 

map.put("name", "홍길동"); 

map.put("addr", "대전"); 

map.put("tel", "010-1234-5678"); 

System.out.println("map 의 데이터 : " + map );

//map 은 쓴 순서가 아니라 다른 순서로 나온다. 즉 순서가 상관이 없고 key 값과 value 값이 짝이 잘

// 맞는지가 중요 

//자료 수정 ==> Map 의 데이터를 수정하려면 put () 메서드의 key 값이 같게 해서 추가한다. 

// ==> Map 은 key 값이 같으면 제일 나중에 추가한 데이터가 남고 그전 데이터는 없어진다.

map.put("addr", "서울");

System.out.println("map 의 데이터 : " + map );

// 자료 삭제 ==> remove(key값) : key 값이 같은 자료를 찾아서 삭제한다. 

// ==> 반환값 : 삭제된 데이터의 value 값 삭제된다. 

/* String removeTel = map.remove("tel"); 

System.out.println("삭제 후 map " + map);

System.out.println("삭제된 value 값 : " + removeTel);*/

// 자료를 읽기 ==> get(key 값) : key 값이 같은 자료의 value 값을 반환한다. 

//         ==> key 값이 없을 떄에는 null 을 반환한다. 

System.out.println("이름 : " + map.get("name"));

System.out.println("전화번호 : " + map.get("tel"));

System.out.println("주소 : " + map.get("addr"));

System.out.println("------------------------------------");

//key 값의 존재여부를 확인하는 메서드 : containsKey(key값) 

//     ==> 해당 key 값이 있으면 true, 없으면 false 를 반환한다. 

System.out.println("name 키값의 존재 여부 " + map.containsKey("name"));

System.out.println("agr 키값의 존재 여부 " + map.containsKey("age"));

System.out.println("------------------------------------");

// Map 에 저장된 데이터를 차례로 읽어와 데이터를 처리하는 방법 

// 방법 1 ) keySet() 메서드를 이용하기 

// keySet(0 ==> Map 의 key 값들을 읽어와 Set 형으로 반환한다. 

Set<String> keySet = map.keySet(); 

Iterator<String> it = keySet.iterator(); 

while( it.hasNext()) { 

String key = it.next();// key 값 가져오기 

String value = map.get(key); 

System.out.println(key + " : " + value );

}

System.out.println("------------------------------------");

//방법 2 ) keySet() 향상된 for문으로 처리하기 

for( String key : map.keySet()) { 

String value = map.get(key); 

System.out.println(key + " : " + value );

}

System.out.println("------------------------------------");

//방법 3 )  value 값 전체만 읽어와서 처리하기  => values() 메서드 이용 

for(String value : map.values()) {

System.out.println(value);

}

System.out.println("------------------------------------");

 

/*

  * 방법4) ==> Map(hashMap 타입) 에는 Entry 라는 내부 class가 만들어져 있다. 

  * 이 Entry 클래스는 key와 value 라는 멤버변수로 구성되어 있다. 

  * Map 에서는 이 Entry 클래스들을 Set 형식으로 저장해서 관리한다.  

  * 

  * -Entry 객체 전체를 가져와서 처리하기 ( ==> 가져온 Entry 들은 Set 형식으로 되어 있다. ) 

  * ==> entrySet() 메서드를 이용한다. 

  */

 

//Entry 라는 내부객체 전체 가져오기 

 

Set<Map.Entry<String, String>> mapSet = map.entrySet();

//우리가 위에 String 타입으로 만들어 놓음 

//iterator 로 이용해보자 

Iterator<Map.Entry<String, String>> entryIt = mapSet.iterator(); 

 

while (entryIt.hasNext()) { 

Map.Entry<String, String> entry = entryIt.next(); //Entry 객체 가져오기

 

//entry 객체에서 key 값과 value 값 구하기 

 

System.out.println("key 값 : " + entry.getKey());

System.out.println("value값 : " + entry.getValue());

System.out.println();

}

 

System.out.println("------------------------------------");

 

 

 

 

 

}


}


댓글