● Map
- 구현 클래스
(1) HashMap(서버 간 데이터 교환)
- Key와 Value 한 쌍으로 저장되며, 검색의 목적을 가지고 있다.
- Key는 중복된 값을 넣으면 Value가 최근 값으로 수정되고, 중복되지 않은 값을 넣으면 새롭게 추가된다.
- Value는 중복이 가능하다.
- Key는 Set 자료구조이고, Value는 Collection 타입이다.
실습(List & Set SpeedTest)
- List와 Set 속도 테스트
import java.time.Duration;
import java.time.Instant;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.IntStream;
public class SpeedTest {
public static void main(String[] args) {
final int SIZE = 10_000_000; // = 10,000,000
final int DATA = 5_000_000; // = 5,000,000
final List<Integer> arrayList = new ArrayList<>(); // up casting
final Set<Integer> hashSet = new HashSet<>(); // up casting
// (ex) range(0, 3) : 0부터 2까지
IntStream.range(0, SIZE).forEach(value -> { // 반복문(forEach())
arrayList.add(value);
hashSet.add(value);
});
Instant start = Instant.now(); // 현재 시간(시작 시간)
arrayList.contains(DATA); // arrayList에서 DATA를 찾는다
Instant end = Instant.now(); // 현재 시간(종료 시간)
// Duration.between(start, end) : 걸린 시간(end - start)
// toMillis() : 밀리초
long elapsedTime = Duration.between(start, end).toMillis();
// 결합성으로 인해 *가 먼저 연산되므로 최우선 연산자()를 써줄 필요가 없다.
System.out.println("arrayList : " + elapsedTime * 0.001 + "초");
start = Instant.now();
hashSet.contains(DATA); // hashSet에서 DATA를 찾는다
end = Instant.now();
elapsedTime = Duration.between(start, end).toMillis();
System.out.println("hashSet : " + elapsedTime * 0.001 + "초");
}
}
![](https://blog.kakaocdn.net/dn/DILku/btrwap2Mrkp/8pT0YFsqKJBTnPN9lbGBAk/img.png)
실습(HashMap)
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
public class HashMapTest {
public static void main(String[] args) {
// 아이디, 비밀번호, 이름, 나이
// Key : String 타입, Value : Object 타입(int와 String을 모두 받아야하기 때문에 Object 타입으로 받는다.)
HashMap<String, Object> userMap = new HashMap<>();
userMap.put("id", "hgd");
userMap.put("pw", "1234");
userMap.put("name", "홍길동");
userMap.put("age", 999);
System.out.println(userMap); // 순서를 부여해주는 iterator()가 사용된다.
// Iterator<Entry<String, Object>> : iterator()의 리턴 타입
// userMap.entrySet()는 Set 타입이라 순서가 없다.
// iterator()로 순서를 부여해준다.
Iterator<Entry<String, Object>> iter = userMap.entrySet().iterator();
while(iter.hasNext()) { //iter.hasNext()가 true일 때
Entry<String, Object> entry = iter.next();
System.out.println(entry.getKey() + ": " + entry.getValue());
}
System.out.println(userMap.size()); // 4쌍을 전달했으므로 size는 4이다.
}
}
![](https://blog.kakaocdn.net/dn/wdtSF/btrwfcuQZ6V/jQtkKKxBCqC12bNkAjjeF1/img.png)
'웹 개발 > Java' 카테고리의 다른 글
[Web_JAVA] 34 (0) | 2022.03.20 |
---|---|
[Web_JAVA] 33 (0) | 2022.03.19 |
[Web_JAVA] 31 (0) | 2022.03.17 |
[Web_JAVA] 30 (0) | 2022.03.16 |
[Web_JAVA] 29 (0) | 2022.03.15 |