언어 자료구조 알고리즘/디딤돌 Java 언어 Part2 활용

[Java 언어 활용] 3.11 Map 인터페이스

언제나휴일 2016. 12. 16. 00:32
반응형

[Java 언어 활용] 3.11 Map 인터페이스


 HashSet 클래스를 이용하여 자료를 보관할 때 원하는 자료를 판별하기 위해 반복자를 사용한다면 선형 자료구조와 큰 차이를 보이지 않습니다. 위 예처럼 단순 값을 보관하고 존재하는지 판별하기 위해 contains 메서드를 사용하면 빠릅니다. 하지만 특정 클래스 형식 개체를 보관하고 주요 멤버로 개체를 검색하려면 contains 메서드를 사용하여 해결할 수 없고 반복자를 사용해야 할 것입니다. 이를 위해 Java에서는 Map 인터페이스를 제공하고 있고 이를 기반으로 구현 클래스를 이용하면 좋은 성능을 갖는 응용을 개발할 수 있습니다.

 

 Collection 인터페이스는 특정 자료를 보관하는 컬렉션에서 제공해야 할 기능을 약속하였습니다. 대신 Map 인터페이스는 키와 값을 쌍으로 보관하는 컬렉션에서 제공해야 할 기능을 약속하고 있습니다. 이는 Key를 이용하여 자료를 보관할 위치를 결정하여 검색에서 빠른 성능을 보장할 수 있게 해 줍니다.

 

 CollectionMap 인터페이스를 기반으로 구현한 클래스들의 검색 속도에 관한 사항은 자료구조에 관한 레퍼런스에서 선형 자료구조와 비선형 자료구조의 검색 속도의 차이에 관해 살펴보시기 바랍니다. 참고로 선형 자료구조는 검색 비용이 O(N), 이진 탐색 트리의 검색 비용은 O(logN), 해쉬 테이블의 검색 비용은 O(1)입니다.

 

 다음은 Map 인터페이스에 약속한 주요 기능입니다.

//보관한 모든 쌍을 제거

public void clear();

//특정 key 보관하고 있는지 판별

public boolean containsKey(Key key);

//특정 value 보관하고 있는지 판별

public boolean containsValue(Value value);

//Map 보관한 key, value 대응하는 Set 구하기

public Set<Map.Entry<Key, Value> > entrySet();

//key 대응하는 value 구하기

public Value get(Key key);

//Map key Set 구하기

public Set<Key> keySet();

//key, value 보관

public void put(Key key, Value value);

//src 보관한 모두를 보관

public void putAll(Map<Key, Value> src);

//특정 key 대응하는 key, value 쌍을 제거

public void Remove(Key key);

//보관한 개수

public int size();

//보관한 value Collection 구하기

public Collection<Value> values();     

 

반응형