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>
색상조절 구현하기
'인천일보아카데미 > - 학습일지' 카테고리의 다른 글
[학습일지]JAVA교육일지 35일차 (0) | 2022.06.13 |
---|---|
[학습일지]JAVA교육일지 33일차 (0) | 2022.06.13 |
[학습일지]JAVA교육일지 31일차 (0) | 2022.06.10 |
[학습일지]JAVA교육일지 30일차 (0) | 2022.06.09 |
[학습일지]JAVA교육일지 29일차 (0) | 2022.06.09 |