인천일보아카데미/- 학습일지

[학습일지]JAVA교육일지 32일차

w1z 2022. 6. 10. 08:33

 

HashMap

 


HashMap

[정의]

- Map 인터페이스를 구현한 대표적인 Map 컬렉션이다.

- Map 인터페이스를 상속하고 있기에 Map 성질을 그대로 가지고 있다.

 

[특징]

- 키(key)와 값(value)을 묶어서 하나의 데이터(entry)로 저장한다.

- 해싱(hashing)을 사용하기 때문에 많은 양의 데이터를 검색하는데 있어서 뛰어난 성능을 보인다.

- 키(key)와 값(value)은 별개의 값이 아니라 서로 관련된 값이다.

   --> 하나의 클래스로 정의(하나의 배열로 정의)

 

키(key) : 컬렉션 내의 키(key) 중에서 '유일' 해야 한다.
값(value) : 키(key)와 달리 데이터의 '중복'을 허용한다.

[ArrayList와 HashMap 차이점]

- 컬렉션에서 대표적으로 많이 쓰이는 ArrayList와 HashMap의 차이점은 무엇일까?

 

1. ArrayList

  - 요소 접근 > 첨자(index) 사용 > 요소의 순서가 있다. (스칼라(Scalar) 배열)

  - 루프 적용 가능

 

2. HashMap

  - 방 번호가 없다 > 요소의 순서가 없다.

  - 방 이름이 있다. (가독성 때문에 사용하는 배열 > 방 이름이 명확하다.)

  - 키(key), 값(value)으로 요소 관리 (연관 배열, 사전 구조(Dictionary))

  - 루프 적용 불가능

   

 

[class와 HashMap 차이점]

- 언뜻보면 개념이 비슷해보이는 class와 HashMap의 차이점은 무엇일까?

 

1. class

  - 반복되는 틀로서의 역할이 좋다. (객체 미리 지정)

  - 규칙을 컴퓨터가 제어한다.(다르면 error 발생O)

  - 클래스 선언 비용 발생

  - 같은 형식의 객체를 여러개 만들 때 사용한다.

 

2. HashMap

  - 반복되는 틀로서의 역할이 부족하다. (방 이름(객체) 중복 X)

  - 규칙을 사람이 제어한다. (키 값이 달라도 error 발생X)

  - 선언 비용 X

  - 같은 형식의 객체를 1개 만들 때 사용한다.

 

3. 차이점 예시

Student c = new Student2();
c.name = "홍길동";
c.address = "인천시";
c.age = 20;

HashMap<String, String> h = new HashMap<String, String>();
h.put("name", "아무개");
h.put("address", "서울시");
h.put("age", "27");


//클래스 :  객체(변수명)이 각각 지정 되있어서 필요할때 마다 사용 가능
//HashMap : 변수명이 따로없이 키(key) 값으로 정해지며 키 값이 틀려지거나, 중복되면 값(value)이 변경됨

 

[HashMap 메소드]

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

//키(key), 값(value) 넣기
map.put("국어", 100);
map.put("영어", 90);
map.put("수학", 80);

//데이터 개수
System.out.println(map.size());

//키(key)에 들어있는 값(value) 불러오기
System.out.println(map.get("국어"));
System.out.println(map.get("영어"));
System.out.println(map.get("수학"));

//중복된 키(key)에 들어있는 값(value) 수정(변경)
map.put("국어", 50);
System.out.println(map.get("국어"));

//키(key) 유무
System.out.println(map.containsKey("국어"));

//값(value) 유무
System.out.println(map.containsValue("150"));

//해당 키값 삭제
map.remove("국어");
System.out.println(map.get("국어"));

//모든 데이터 초기화
map.clear();
System.out.println(map.size());


//output

100 //국어
90  //영어
80  //수학

3 //sizse

50 //변경된 국어

true
false

null //국어 삭제

0 //초기화

MEMO >

# 각종 컬렉션에 대해 배운것(ArrayList, HashMap) 과 여지껏 배운것들을(제어문, 반복문, 배열, 클래스 등등...) 앞으로 어떻게 써야 효율적일지 생각하면서 코드작성하자.

 

# ArrayList와 비슷한 HashMap을 직접 구현해봤는데 아직 부족한거같다. 여러번 직접 구현해보자. 

 

# ArrayList와 HashMap을 직접 구현해보면서 toString를 오버로딩해서 직접 눈으로 값들을 보면서 하는것이 편하고 좋다! 잘 활용하자! 


js 과제

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #page{
            width:800px;
            margin:0 auto;

        }
        #canvas{
            height:400px;

        }
        #input{
            width:70%;

        }

    </style>
</head>
<body>
    <div id="page">
        <div id="canvas"></div>
        <div>
            GREEN<input type="range" id="green" min="0" max="255" onchange="changeColor()">
            <span id="green_span"></span>

        </div>
    </div>

    <script>
        function changeColor(){
            const canvas = document.querySelector('#canvas')
            const  green11 = document.querySelector('#green');
            const greenSpan = document.querySelector('#green_span');
            const green = parseInt(green11.value);
            greenSpan.innerHTML=green;

            canvas.style.backgroundColor = `rgb(0,${green},0)`

        }
    </script>
</body>
</html>

색상조절 구현하기