[Java] HashMap이용하기



1️⃣ 해시란?

  • C언어를 사용했지만 해시라는 개념은 비슷하기 때문에 다음링크의 사이트를 참고하면 됩니다.
    <<<[C]해시(hash)




2️⃣ Hashmap

  • 다음의 패키지를 import해야 합니다.
import java.util.HashMap;

(1) HashMap 선언

HashMap<String, String>hmap = new HashMap<String, String>();
  • HashMap은 제네릭타입인자로 "key""value" 두개를 받습니다.
  • key의 타입과 value의 타입</rd> 모두 원시(Primitive)타입을 사용할 수 없습니다.(boolean, char, int, double…)
  • 굳이 int형으로 입력하고 싶다면 Integer클래스를 사용하면 됩니다.(Primitive 자료형 -> Wrapper 클래스)
  • ()안에 정수를 넣어 배열의 크기를 지정할 수 있습니다.

(2) HashMap 대입(put)

  • 위에서 list라는 새로운 객체로 HashMap을 만들어 줬습니다.
  • HashMap클래스에 내장된 put메소드를 이용하여 값과 데이터를 저장할 수 있습니다.
hmap.put("0", "zero");
hmap.put("1", "one");

(3) HashMap 상태확인

  • 현재 생선되어 있는 list(HashMap클래스의 인스턴스)의 상태(크기, 키값, 데이터값)을 확인할 수 있습니다.
/* 크기 확인 */
hmap.size() // int형
/* 키값 확인 */
hmap.containsKey("1") // boolean형
/* 데이터값 확인 */
hmap.containsValue("zero") // boolean형
/* list 확인 */
System.out.println(hmap); // {0=zero, 1=one}
/* hash 주소출력 */
System.out.println(hmap.hashCode); // 114300186

(4) HashMap 데이터 불러오기(get)

  • get메소드를 이용하여 데이터를 불러올 수 있습니다.
String listdata = hmap.get("1") // "one"

(5) HashMap 요소 제거

/* 모두 제거 */
hmap.clear();
/* 특정값 제거 */
hmap.remove("0");
hmap.remove("1", "one");




3️⃣ HashSet

  • HashSet은 값의 중복을 허용하지않으며, 순서를 보장하지 않습니다.(key값이 없고 오직 value값만을 받음)
  • 다음의 패키지를 import해야 합니다.
import java.util.HashSet;

(1) HashSet 선언

HashSet<Integer> set1 = new HashSet<Integer>();
HashSet<String> set2 = new HashSet<String>();
  • HashSet클래스는 마찬가지로 원시(Primitive)타입을 매게변수로 사용할 수 없습니다.

(2) HashSet 값 추가 및 삭제

/* 값 추가 */
set1.add(1);
set1.add(2);
set1.add(3);
set2.add("apple");
set2.add("banana");
/* 값 삭제 */
set1.remove(2);
/* 모든 값 삭제 */
set2.clear();

(3) HashSet 크기 및 값확인

/* 크기 */
set1.size(); // int형
/* 값 확인 */
set2.contains("apple") // boolean형

(4) HashSet 값 출력

  • HashSet클래스는 순서가 보장되어 있지 않기 때문에 특정 데이터를 불러올 수 있는 메소드가 없습니다.
  • 그대신에 Iterator클래스를 이용합니다.

< Iterator클래스를 이용하여 해시값출력 >

import java.util.HashSet;
import java.util.Iterator;

public class main {
    public static void main(String[] argc) {

        HashSet<String>set = new HashSet<String>();
        set.add("apple");
        set.add("banana");
        set.add("tomato");

        Iterator<String> iterator = set.iterator();
        while (iterator.hasNext()) {
            String str = iterator.next();
            System.out.println(str);
        }
    }
}
/* 출력 */ banana apple tomato




4️⃣ 그밖의 해시관련 클래스

  • 자바에서의 해시(hash)HashMap, HashSet말고도 여러개 존재합니다.
  • 각각의 특징과 쓰임이 다르기 때문에 필요에 따라서 잘 선택해서 사용하면 될 것 같습니다.




© 2021.02. by kirim

Powered by kkrim