저장 순서가 유지되지 않고, 중복 객체도 저장하지 못하게 하는 자료구조
null도 중복을 허용하지 않기 때문에 1개의 null만 저장
Hash set
Set에 객체를 저장할때 hash함수를 사용하여 처리 속도가 빠름
동일 객체 뿐 아니라 동등 객체도 중복하여 저장하지 않음
Hash 이름이 들어간 객체들은
equals()
hashcode()
가 오버라이딩 되어야 한다.
키와 값으로 구성되어 잇으며, 키와 값은 모두 객체
키는 중복 저장을 허용하지 않고 (Set방식), 값은 중복 저장 가능(List방식)
키가 중복되는 경우, 기존에 있는 키에 해당하는 값을 덮어 씌움
키밸류 쓰는법
Key:Value (Key = Value)
"name" : "홍길동"
추가할때 put을 쓴다.
Map에 담겨있는 요소들에 순차적으로 접근하기 위한 방법 2가지
keySet()이용하기
: keySet()으로 Map의 Key를 Set에 담은 후 Set에 있는 Iterator 를 통해 접근
entrySet() 이용하기
: entrySet() 으로 Map의 키와 값을 Set에 담은 후 Set에 있는 Iterator 를 통해 접근
HashMap
ex) Map<K,V>map = new HashMap<K,V>( );
List Interface
ArrayList : 상대적으로 빠르고 요소에 대해 순차적으로 접근할 수 있다.
Vector : ArrayList의 이전 버전이며 모든 메서드가 동기화 되어 있다.
LinkedList : 순서가 변경되는 경우 노드 링크만 변경하면 되므로 삽입, 삭제가 빈번 할 때 빠르다.
Set Interface
HashSet : 빠른 접근 속도를 가지고 있으나 순서를 예측할 수 없다.
LinkedHashSet : 요소가 추가된 순서대로 접근할 수 있다.
TreeSet : 요소들의 정렬 방법을 직접 지정할 수 있다.
Map Interface
HashMap : 중복을 허용하지 않고 순서를 보장하지 않으며 null 값을 허용한다.
Hashtable : HashMap 보다는 느리지만 동기화를 지원하며 null 값을 허용하지 않는다.
TreeMap : 정렬된 순서대로 Key와 Value를 저장하므로 빠른 검색이 가능하지만 요소를 추가할 때 정렬로 인해 오래걸린다.
LinkedHashMap : HashMap과 기본적으로 동일하지만 입력한 순서대로 접근이 가능하다.