본문 바로가기

웹 개발/Java

[Web_JAVA] 32

● 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 + "초");
	
	}
}

 

결과

 

 

 

 

실습(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이다.
		
	}
}

 

결과

 

 

 

 

'웹 개발 > 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