JAVA/JAVA 연습

HashMap을 이용해서 전화번호부 만들기

오늘의 진 2022. 7. 29. 15:18
package ja_0729;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class My0729 {

	static HashMap phoneBook = new HashMap();

	private static void addPhoneNo(String groupName, String name, String num) {
		addGroup(groupName);
		HashMap group = (HashMap) phoneBook.get(groupName);
		group.put(name, num);

	}

	private static void addPhoneNo(String name, String num) {
		addPhoneNo("기타", name, num);
	}

	private static void addGroup(String groupName) {
		if (!phoneBook.containsKey(groupName)) {
			phoneBook.put(groupName, new HashMap());
		}

	}

	// 출력구문 생성하기

	private static void print() {

		Set set = phoneBook.entrySet();
		Iterator it = set.iterator();

		while (it.hasNext()) {

			Map.Entry e = (Entry) it.next();

			Set subset = ((HashMap) e.getValue()).entrySet();
			Iterator iit = subset.iterator();
			System.out.println("@" + e.getKey() + "[" + subset.size() + "]");

			while (iit.hasNext()) {

				Map.Entry ee = (Entry) iit.next();

				System.out.println((String) ee.getKey() + " " + (String) ee.getValue());

			}

			System.out.println();

		}

	}

	public static void main(String[] args) {

		addPhoneNo("가족", "홍길동", "010-123-1234");
		addPhoneNo("가족", "홍길순", "010-000-1234");
		addPhoneNo("친구", "해당화", "010-889-5654");
		addPhoneNo("친구", "해당화", "010-376-8845");
		addPhoneNo("친구", "들국화", "010-123-1234");
		addPhoneNo("회사", "영산강", "010-444-4444");
		addPhoneNo("회사", "섬진강", "010-789-7777");
		addPhoneNo("회사", "금강", "010-666-6666");
		addPhoneNo("회사", "한강", "010-456-7777");
		addPhoneNo("세탁", "010-888-8888");

		print();

	}

}

맵 안에 맵을 생성하는 이중구조로 만들어주었다. 

 그룹명 다시안에 맵 생성 -(이름 : 전화번호)