1 분 소요

Chap 12.1 ~ 12.4 복습

  • Collection 인터페이스
    • List 인터페이스 : 자료 관리에 유용
      • ArrayList 클래스 : 단일 스레드일 때 사용 권장
      • Vector 클래스 : 멀티 스레드일 때 사용 권장
      • LinkedList 클래스 : 요소 추가, 제거에 유리
    • Set 인터페이스 : 순서가 없으므로 요소 출력시 Interator 사용
      • HashSet 클래스 : 중복 제거, 순서 X, hashCode(), equals() 메서드 재정의 필요
      • TreeSet 클래스 : 중복 제거, 순서 O, Comparable 인터페이스 / compareTo() 메서드 또는 Comparator 인터페이스 / compare 메서드 재정의 필요

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 클래스

HashMapHashtable 의 차이는 ArrayListVector 의 차이와 같다. 멀티스레드 환경이 아니라면 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 메서드 재정의 필요
  • Map 인터페이스 : key - value로 대응되는 경우 사용
    • HashMap 클래스 : 단일 스레드일 때 사용 권장
    • Hashtable 클래스 : 멀티 스레드일 때 사용 권장
    • TreeMap 클래스 : 순서 O, Comparable 인터페이스 / compareTo() 메서드 또는 Comparator 인터페이스 / compare 메서드 재정의 필요

태그:

카테고리:

업데이트:

댓글남기기