1. Map 인터테이스
컬렉션 프레임워크의 맵(Map) 역시 컬렉션처럼 계층적 구조를 가지고 있습니다.
맵에 참여하는 모든 객체는 Map 입니다.SortedMap은 특별한 Map이라고 할 수 있습니다
즉, 컬렉션 프레임워크의 맵은 Map을 정점으로 해서, Map을 상속한 SortedMap이 있습니다.
Map은 키(key)와 값(value)을 일대일로 보관하고 있는 객체입니다.
아주 쉽게 생각하면 Key를 보관하는 쪽은 Set, 값을 보관하는쪽은 Collection이라고
생각하면 됩니다. 만약 여러분이 Hashtable을 사용한 적이 있다면 Map을 사용하신
것입니다. 왜냐하면 Hashtable, HashMap은 가장 대표적인 Map이기 때문입니다.
출처: https://scarlett.tistory.com/entry/자바공부-11Map-인터페이스
자바공부-11.Map 인터페이스
컬렉션 프레임워크의 맵(Map) 역시 컬렉션처럼 계층적 구조를 가지고 있습니다. 맵에 참여하는 모든 객체는 Map 입니다.SortedMa..
scarlett.tistory.com
Map 인터페이스를 구현한 클래스이다. key와 value로 묶어서 데이터를 저장한다. key를 hashing시켜서 인덱스로 가지기 때문에 데이터 조회에 뛰어난 성능을 가진다.
HashMap과 HashTable의 차이점은 동기화 여부이다. Hashmap은 동기화를 지원하지 않지만 HashTable은 동기화를 지원하기 때문에 멀티 쓰레드 환경에 적합하다. HashTable의 모든 Data 변경에는 synchronized가 선언되어 있기 대문에 HashMap보다 속도가 더 느리다.
Java5부터 ConcurrentHashMap이 등장했기 때문에 이를 사용하면 된다. ConcurrentHashMap은 key,value에 null을 허용하지 않는다.
HashMap 구현체
아래는 실제 HashMap 구현체이다. Entry라는 내부 클래스를 정의하고 Entry타입의 배열을 선언하고 있다. key,value는 한 쌍을 이루기 때문에 하나의 배열로 다루는 것이 무결성을 보장해준다. 또한, key/value는 Object 타입으로 선언되어 있기 때문에 어떤 객체도 저장이 가능하다. (일반적으로, Key값은 String을 대문자 또는 소문자로 통일해서 사용)
public class HashMap extends AbstractMap implements Map, Cloneable, Serializable
{
transient Entry[] table;
...
static class Entry implements Map.Entry {
final Object Key;
Object value;
...
}
}
HashMap 특징
HasMap에는 해싱을 하는 작업이 있는데 이로인해 저장순서를 유지하지 않는다. 각각의 테이블에는 링크드 리스트가 저장되어 있다. 따라서 링크드리스트의 길이가 길어지면 검색속도가 느려지게 된다. 하나의 해시코드에 연결된 링크드리스트에 최소한의 데이터만 저장되려면 HashMap의 크기를 적절하게 지정해야하고 해싱과정에서 반환되는 해시코드가 중복되지 않도록 해시함수의 알고리즘을 잘 결정해야 한다.
HashMap 구현체 내부에서는 Object 클래스의 hashCode()를 오버라이딩해서 문자열의 내용으로 해시코드를 만들어 낸다. 따라서 서로 다른 String 인스턴스여도 내용이 같으면 같은 hashCode를 반환받는다.
TreeMap
TreeMap은 이진검색트리로 key/value를 저장한다. 대부분의 경우 HashMap이 TreeMap보다 검색 속도가 더 뛰어나지만 범위 검색이나 정렬이 필요한 경우에는 TreeMap이 적절하다.
자바 - Map 인터페이스
HashMap, HashTable Map 인터페이스를 구현한 클래스이다. key와 value로 묶어서 데이터를 저장한다. key를 hashing시켜서 인덱스로 가지기 때문에 `데이터 조회에 뛰어난 성능`을 가진다. HashMap과 HashTable의.
syundev.tistory.com
올인원 패키지 : JAVA 웹 개발 마스터👉https://bit.ly/35aoeAW
'패스트캠퍼스 환급 챌린지' 카테고리의 다른 글
[패스트캠퍼스 수강 후기] {자바 인강} 100% 환급 챌린지 {26} 회차 미션 (0) | 2020.11.28 |
---|---|
[패스트캠퍼스 수강 후기] {자바 인강} 100% 환급 챌린지 {25} 회차 미션 (0) | 2020.11.27 |
[패스트캠퍼스 수강 후기] {자바 인강} 100% 환급 챌린지 {23} 회차 미션 (0) | 2020.11.25 |
[패스트캠퍼스 수강 후기] {자바 인강} 100% 환급 챌린지 {22} 회차 미션 (0) | 2020.11.24 |
[패스트캠퍼스 수강 후기] {자바 인강} 100% 환급 챌린지 {21} 회차 미션 (0) | 2020.11.23 |