티스토리 뷰

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일)' 카테고리의 다른 글

HashMapEx3 - 전화번호부  (0) 2013.07.19
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
TAG
댓글
댓글쓰기 폼