[Chap 12] 12.5 Map 인터페이스
Chap 12.1 ~ 12.4 복습
- Collection 인터페이스
- List 인터페이스 : 자료 관리에 유용
- ArrayList 클래스 : 단일 스레드일 때 사용 권장
- Vector 클래스 : 멀티 스레드일 때 사용 권장
- LinkedList 클래스 : 요소 추가, 제거에 유리
- Set 인터페이스 : 순서가 없으므로 요소 출력시 Interator 사용
- HashSet 클래스 : 중복 제거, 순서 X, hashCode(), equals() 메서드 재정의 필요
- TreeSet 클래스 : 중복 제거, 순서 O, Comparable 인터페이스 / compareTo() 메서드 또는 Comparator 인터페이스 / compare 메서드 재정의 필요
- List 인터페이스 : 자료 관리에 유용
Map 인터페이스
Map 인터페이스는 자료를 쌍으로 관리하는 데 필요한 메서드가 정의되어 있다.
Map 인터페이스 -> HashMap 클래스
HashMap 클래스는 이전에 key - value로 대응되게 하기 위해서 사용한 적이 있다. 자료 추가나 자료 검색 속도가 상당히 빠르다는 장점이 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | //MemberHashMap.java package map.hashmap; import java.util.HashMap; import java.util.Iterator; import collection.Member; public class MemberHashMap { private HashMap<Integer, Member> hashMap; public MemberHashMap() { hashMap = new HashMap<Integer, Member> (); } public void addMember(Member member) { hashMap.put(member.getMemberId(), member); } public boolean removeMember(int memberId) { if (hashMap.containsKey(memberId)) { //HashMap에 매개변수로 받은 value의 키 값인 회원 아이디가 있다면 hashMap.remove(memberId); } System.out.println(memberId + "가 존재하지 않습니다."); return false; } public void showAllMember() { Iterator<Integer> ir = hashMap.keySet().iterator(); //key의 집합 while (ir.hasNext()) { int key = ir.next(); //key값을 구함 Member member = hashMap.get(key); //key값에 해당하는 value값을 구함 System.out.println(member); } System.out.println(); } } | cs |
Map 인터페이스는 모든 자료를 순회하면서 한번에 출력할 수 없다. 그렇기 때문에 key값을 먼저 구해놓고(.keySet()) 그런 다음 key에 대응되는 value값을 찾아서(.get(key)) member 변수에 넣어준 후 member를 출력하면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | //MemberHashMapTest.java package map.hashmap; import collection.Member; public class MemberHashMapTest { public static void main(String[] args) { MemberHashMap memberHashMap = new MemberHashMap(); Member memberLee = new Member(1001, "이지원"); Member memberSon = new Member(1002, "손민국"); Member memberPark = new Member(1003, "박서훤"); Member memberHong = new Member(1004, "홍길동"); memberHashMap.addMember(memberLee); memberHashMap.addMember(memberSon); memberHashMap.addMember(memberPark); memberHashMap.addMember(memberHong); memberHashMap.showAllMember(); memberHashMap.removeMember(1004); memberHashMap.showAllMember(); } } | cs |
- Map 인터페이스 -> HashMap 클래스 VS Hashtable 클래스
HashMap 과 Hashtable 의 차이는 ArrayList 와 Vector 의 차이와 같다. 멀티스레드 환경이 아니라면 HashMap 사용을 권장한다.
Map 인터페이스 -> TreeMap 클래스
저번 챕터에서도 그랬듯이 Tree가 붙어있다면, 출력 결과 값을 정렬해서 출력한다고 했다. Set 인터페이스와 마찬가지고 compare메서드 또는 compareTo메서드를 재정의 해주어야 한다.
Chap 12 복습
- Collection 인터페이스
- List 인터페이스 : 자료 관리에 유용
- ArrayList 클래스 : 단일 스레드일 때 사용 권장
- Vector 클래스 : 멀티 스레드일 때 사용 권장
- LinkedList 클래스 : 요소 추가, 제거에 유리
- Set 인터페이스 : 순서가 없으므로 요소 출력시 Interator 사용
- HashSet 클래스 : 중복 제거, 순서 X, hashCode(), equals() 메서드 재정의 필요
- TreeSet 클래스 : 중복 제거, 순서 O, Comparable 인터페이스 / compareTo() 메서드 또는 Comparator 인터페이스 / compare 메서드 재정의 필요
- List 인터페이스 : 자료 관리에 유용
- Map 인터페이스 : key - value로 대응되는 경우 사용
- HashMap 클래스 : 단일 스레드일 때 사용 권장
- Hashtable 클래스 : 멀티 스레드일 때 사용 권장
- TreeMap 클래스 : 순서 O, Comparable 인터페이스 / compareTo() 메서드 또는 Comparator 인터페이스 / compare 메서드 재정의 필요
댓글남기기