KyungHwan's etc.

자바 Map 컬렉션 클래스 본문

Java

자바 Map 컬렉션 클래스

KyungHwan_0 2018. 6. 21. 09:13

자바 Map 컬렉션 클래스

Map 인터페이스는 Collection 인터페이스와는 다른 저장 방식을 가진다.

Map 인터페이스를 구현한 Map 컬렉션 클래스들은 키와 값을 하나의 쌍으로 저장하는 방식(key-value 방식)을 사용한다.

여기서 키(key)란 실질적인 값(value)을 찾기 위한 이름의 역할을 한다.

Map 인터페이스를 구현한 모든 Map 컬렉션 클래스는 다음과 같은 특징을 가진다.

  • 요소의 저장 순서를 유지하지 않는다.

  • 키는 중복을 허용하지 않지만, 값의 중복은 허용한다.

대표적인 Map 컬렉션 클래스에 속하는 클래스는 다음과 같다.

  • HashMap<K, V>

  • Hashtable<K, V>

  • TreeMap<K, V>


HashMap<K, V> 클래스

HashMap 클래스는 Map 컬렉션 클래스에서 가장 많이 사용되는 클래스 중 하나이ㅏ.

JDK 1.2부터 제공된 HashMap 클래스는 해시 알고리즘(hash algorithm)을 사용하여 검색 속도가 매우 빠르다.

HashMap 클래스는 Map 인터페이스를 구현하므로, 중복된 키로는 값을 저장할 수 없다. 하지만 같은 값을 다른 키로 저장하는 것은 가능하다.

기본적으로 Map을 선언하고 HashMap을 불러온다.

Map map = new HashMap();
또는
HashMap map = new HashMap();

그리고 HashMap을 사용할때 뒤에 key-value의 변수명을 명확하게 해주는 것을 권장한다.

아래와 같이 정해줄 경우, 데이터의 형식이 일정하다보니 좀더 빠르게 찾을 수 있고, 보기에도 명확하다.

데이터를 저장 할때는 간단하게 put으로 저장 가능하다.

key는 String, value는 Int형으로 저장

map.put("국어",90);
map.put("수학":100);

불러오는 것은 get으로 가져올 수 있다.

인자로 key를 넣어주면 된다.

System.out.println("국어점수 : "+map.get("국어"));
국어점수 : 90

TreeMap<Integer, String> tm = new TreeMap<Integer, String>();

// put() 메소드를 이용한 요소의 저장

tm.put(30, "삼십");
tm.put(10, "십");
tm.put(40, "사십");
tm.put(20, "이십");


// Enhanced for 문과 get() 메소드를 이용한 요소의 출력

System.out.println("맵에 저장된 키들의 집합 : " + tm.keySet());
for (Integer key : tm.keySet()) {
   System.out.println(String.format("키 : %s, 값 : %s", key, tm.get(key)));

}


// remove() 메소드를 이용한 요소의 제거

tm.remove(40);


// iterator() 메소드와 get() 메소드를 이용한 요소의 출력

Iterator<Integer> keys = tm.keySet().iterator();
while (keys.hasNext()) {
   Integer key = keys.next();
   System.out.println(String.format("키 : %s, 값 : %s", key, tm.get(key)));

}


// replace() 메소드를 이용한 요소의 수정
tm.replace(20, "twenty");


for (Integer key : tm.keySet()) {
   System.out.println(String.format("키 : %s, 값 : %s", key, tm.get(key)));
}


// size() 메소드를 이용한 요소의 총 개수
System.out.println("맵의 크기 : " + tm.size());

맵에 저장된 키들의 집합 : [10, 20, 30, 40]

키 : 10, 값 : 십
키 : 20, 값 : 이십
키 : 30, 값 : 삼십
키 : 40, 값 : 사십

키 : 10, 값 : 십
키 : 20, 값 : 이십
키 : 30, 값 : 삼십

키 : 10, 값 : 십
키 : 20, 값 : twenty
키 : 30, 값 : 삼십

맵의 크기 : 3

HashMap<K, V> 메소드

HashMap<K, V> 클래스에서 제공하는 주요 메소드는 다음과 같다.

생성자 / 메서드설명
HashMap()

- HashMap 객체를 생성 ex)    HashMap<String , Integer> map = new HashMap<String , >(); Map<String, Integer> map = new HashMap<String, integer>();

HashMap(int initlalCapacity)- 지정된 값을 초기 용량으로 하는 HashMap객체를 생성한다.
HashMap(int initlalCapacity, float loadFactory)- 지정된 값을 초기용량과 load factory의 HashMap 객체를 생성한다.
HashMap(Map m)- 주어진 Map에 저장된 모든 요소를 포함하는 HashMap을 생성한다.
void clear()- HashMap에 저장된 모든 객체를 제거한다. ex) map.clear();
Object clone()

- 현재 HashMap을 복제하여 반환한다. ex)

newmap = (HashMap)map.clone();

boolean containsKey(Object Key)- HashMap에 지정된 키(Key)가 포함되어 있는지 알려준다.
boolean containsValue(Object Value)- HashMap에 지정된 값(Value)가 포함되어 있는지 알려준다.
Set entrySet()

- HashMap에 저장된 Key - Value갑슬 엔트리(키와 값을 결합)의 형태로 Set에 저장하여 반환 ex) map.put("A", 1); map.put("B", 2); map.put("C", 3); Set set = map.entrySet(); System.out.println("set values are" + set); (result) set values : [A=1,B=2,C=3]

Object get(Object Key)

- 지정된 Key 의 값을 반환한다. ex) map.put("A", 1); map.put("B", 2); map.put("C", 3); String val = (String)map.get("B"); System.out.println("Value for key B is: " + val); (result) Value for key B is 2

bloolean isEmpty- HashMap이 비어있는지 확인한다 . ex) boolean val = map.isEmpty();
Set keySet()

- HashMap에 저장된 모든 키가 저장된 Set을 반환한다.

ex) map.put("A", 1); map.put("B", 2); map.put("C", 3); Set keyset = map.keySet(); System.out.println("Key set values are" + keyset) (result) Key set values are [A,B,C]

Object put(Object Key, Object Value)

- HashMap에 키와 값을 저장. ex) map.put("A", "aaa"); map.put("B", "bbb"); map.put("C", "ccc");

void putAll(Map m)- Map에 해당하는 모든 요소를 HashMap에 저장한다.
Object remove(Object Key)

- HashMap에서 지정된 키로 지정된 값을 제거한다.

ex)

map.remove("key");

int size()- HashMap에 저장된 요소의 개수를 반환한다.
Collection values()- HashMap에 저장된 모든 값을 컬렉션 형태로 반환한다.


'Java' 카테고리의 다른 글

자바(JAVA) Sokect 통신  (0) 2018.06.22
자바(JAVA) 파일 입출력(I/O)  (0) 2018.06.22
자바 List 컬렉션 클래스 (ArrayList)  (0) 2018.06.20
자바 컬렉션 프레임워크(Collection framework)  (0) 2018.06.20
자바 제네릭(generic)  (0) 2018.06.20
Comments