티스토리 뷰
package practice;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class HashMapEx3 {
static HashMap phoneBook = new HashMap();
//해시맵 생성
public static void main(String[] args) {
// TODO Auto-generated method stub
addPhoneNo("친구", "이", "010-111-1111");
addPhoneNo("친구", "김", "010-222-2222");
addPhoneNo("친구", "김", "010-333-3333");
addPhoneNo("회사", "김대리", "010-444-4444");
addPhoneNo("회사", "김대리", "010-555-5555");
addPhoneNo("회사", "박대리", "010-666-6666");
addPhoneNo("회사", "이과장", "010-777-7777");
addPhoneNo("세탁", "010-111-1111");
//메소드 호출
printList();
}
static void addGroup(String groupName){
if(!phoneBook.containsKey(groupName)){
phoneBook.put(groupName, new HashMap());
//그룹생성 메소드, 키는 groupName, values는 새로운 해시맵이다.
//해시맵에 키가 존재하지 않는 경우에만 실행
}
}
static void addPhoneNo(String name, String tel) {
// TODO Auto-generated method stub
addPhoneNo("기타",name,tel);
//오버로딩
}
static void addPhoneNo(String groupName, String name, String tel) {
// TODO Auto-generated method stub
addGroup(groupName); //그룹에 더하기
HashMap group = (HashMap)phoneBook.get(groupName);
//참조데이터형, phoneBook 해시맵의 GroupName에 대한 객체를 반환 받는다.
group.put(tel, name);
//전화번호를 키로 저장
}
private static void printList() {
// TODO Auto-generated method stub
Set set = phoneBook.entrySet();
Iterator it = set.iterator();
//엔트리셋 반환 및 이터레이터 생성
while(it.hasNext()){
Map.Entry e = (Map.Entry)it.next();
Set subSet = ((HashMap)e.getValue()).entrySet();
Iterator subIt = subSet.iterator();
//값으로이루어진 서브셋 생성
System.out.println(" * "+e.getKey()+"["+subSet.size()+"]");
//그룹명과 개수 출력
while(subIt.hasNext()){
Map.Entry subE = (Map.Entry)subIt.next();
//그룹에 딸린 서브셋을 이터레이터로 읽음
String telNo =(String)subE.getKey();
String name =(String)subE.getValue();
System.out.println(name+" " +telNo);
}
System.out.println();
}
}
}
결과 :
* 기타[1]
세탁 010-111-1111
* 친구[3]
김 010-333-3333
김 010-222-2222
이 010-111-1111
* 회사[4]
박대리 010-666-6666
이과장 010-777-7777
김대리 010-444-4444
김대리 010-555-5555
'java,web study > 3주차 (7월 15일 ~21일)' 카테고리의 다른 글
HashMapEx2 - 점수 계산 (0) | 2013.07.19 |
---|---|
HashMapEx1 - 로그인 (1) | 2013.07.19 |
ComparatorEx1 - 오름차순(디폴트), 내림차순 정렬 (0) | 2013.07.19 |
TreeSetEx1 - 문자열 (0) | 2013.07.19 |
TreeSetLotto (0) | 2013.07.19 |