Java/문법

Java 이름과 점수의 쌍(pair)으로 저장 하는 HashMap

ssury94 2024. 12. 17. 15:16
 
 
 

학생 이름, 점수를 저장하려 한다.

 


        //이순신, 95
        //홍길동, 80
        //김나나, 70

 


이름과 점수의 쌍(pair)으로 저장 하는 HashMap
홍길동 몇점이야 라고 물으신다면? 80점이라고 바로 대답해드림 < direct access

pairkey-홍길동과 value-80라고 합니다.

 

ArrayListHashMap의 차이

ArrayList:

  • 구조: 동적 배열을 기반으로 하며, 요소를 순차적으로 저장합니다.
  • 중복 허용: 동일한 값을 여러 번 저장할 수 있습니다.
  • 순서 유지: 요소가 삽입된 순서를 유지합니다.

HashMap:

  • 구조: 키-값 쌍으로 데이터를 저장합니다.
    하나의 키에 하나의 값만 저장
  • 중복 허용: 동일한 키를 사용할 수 없으며, 키는 유일해야 합니다.
  • 순서 미보장: 삽입 순서를 기억하지 않으며, 데이터의 순서는 보장되지 않습니다.

HashMap의 CRUD

import java.util.HashMap;
import java.util.Map;

public class HashMapMain {
    public static void main(String[] args) {
        // 학생 이름, 점수를 저장하려 한다.

        //이순신, 95
        //홍길동, 80
        //김나나, 70
        //이름과 점수의 쌍(pair)으로 저장
        //홍길동 몆점이야? 80점 < direct access
        //이 pair를 key와 value라고 합니다.

        HashMap<String, Integer> scoreMap=new HashMap<>();
        //문자랑 숫자

HashMap <문자, 숫자 - 페어> scoreMap = new HashMap<>();

 

 

데이터 추가 CRUD의 C put() 

scoreMap.put("이순신",95);
scoreMap.put("홍길동",80);
scoreMap.put("김나나",70);

 

 

데이터 가져오기 CRUD의 R get()

//데이터 가져오기 CRUD의 R get(key)
//key로 한번에 데이터 엑세스가 가능
//김나나 점수는?
scoreMap.get("김나나");
//HashMap은 그래서 키값이 유니크해야한다.
System.out.println(scoreMap.get("김나나"));

key로 한번에 데이터 엑세스가 가능 >> 그래서 key값은 유니크 해야한다!

 

 

데이터 수정하기 CRUD의 U put()

//데이터 수정하기 CRUD의 U put()
//생성도 put(), 수정도 put()
scoreMap.put("김나나",88);
System.out.println(scoreMap.get("김나나"));

 

 

데이터 삭제하기 CRUD의 D remove()

scoreMap.remove("홍길동");

 

 

전체 해쉬맵에 저장되어있는 데이터를 모두 가져와서 출력하자.

for(Map.Entry<String, Integer> scorePair : scoreMap.entrySet() ){
    System.out.println(scorePair.getKey() +" : "+scorePair.getValue());
}
//scroeMap에서 하나씩 꺼내서 scorePair에 저장

 

 

scoreMap.entrySet(): scoreMap의 모든 엔트리(키-값 쌍)를 가져옵니다.
for-each 루프: 각 Map.Entry 객체를 순회하며,
getKey(): 현재 엔트리의 키를 반환합니다.
getValue(): 현재 엔트리의 값을 반환합니다.

 

데이터 모두 삭제 clear()

// 데이터 모두 삭제
scoreMap.clear();

 

 

비어있는지 확인 isEmpty()

System.out.println(scoreMap.isEmpty());

true, false로 나타난다.

 

 

 

import java.util.HashMap;
import java.util.Map;

public class HashMapMain {
    public static void main(String[] args) {
        // 학생 이름, 점수를 저장하려 한다.

        //이순신, 95
        //홍길동, 80
        //김나나, 70
        //이름과 점수의 쌍(pair)으로 저장
        //홍길동 몆점이야? 80점 < direct access
        //이 pair를 key와 value라고 합니다.
        //ArrayList와의 차이 : Hashmap은 순서가 없다!
        //사람친화적이다!

        HashMap<String, Integer> scoreMap=new HashMap<>();
        //문자랑 숫자

        //변수 이름 하나로 여러 데이터를 저장할수 있다.

        //데이터 추가 CRUD의 C put() 집어넣어라
        scoreMap.put("이순신",95);
        scoreMap.put("홍길동",80);
        scoreMap.put("김나나",70);

        //데이터 가져오기 CRUD의 R get(key)
        //key로 한번에 데이터 엑세스가 가능
        //김나나 점수는?
        scoreMap.get("김나나");
        //HashMap은 그래서 키값이 유니크해야한다.
        System.out.println(scoreMap.get("김나나"));


        //데이터 수정하기 CRUD의 U put()
        //생성도 put(), 수정도 put()
        scoreMap.put("김나나",88);
        System.out.println(scoreMap.get("김나나"));

        //데이터 삭제하기 CRUD의 D remove()
        scoreMap.remove("홍길동");

        //전체 해쉬맵에 저장되어있는 데이터를 모두 가져와서 출력하자.
        for(Map.Entry<String, Integer> scorePair : scoreMap.entrySet() ){
            System.out.println(scorePair.getKey() +" : "+scorePair.getValue());
        }
        //scroeMap에서 하나씩 꺼내서 screPair에 저장

        // 데이터 모두 삭제
        scoreMap.clear();

        // 비어있는지 확인.
        System.out.println(scoreMap.isEmpty());
        
    }
}