본문 바로가기
자료 구조/기본 개념

[자료 구조] 13. Map 인터페이스 사용 예제 :회원 가입 순서 기록 및 조회 시스템

글: Song hyun 2024. 5. 13.
728x90
반응형

[자료 구조] 13. Map 인터페이스 사용 예제

: 회원 가입 순서 기록 및 조회 시스템

 

도전과제: 회원 가입 순서 기록 및 조회 시스템

문제 설명: 사용자들이 웹사이트에 가입한 순서대로 회원 정보를 기록하고, 가입한 순서를 기준으로 회원을 조회하는 시스템을 구현하고자 합니다. 사용자는 이름과 이메일 주소로 구성되며, 시스템은 사용자가 가입한 순서대로 정보를 저장해야 합니다. 사용자를 조회할 때는 가입한 순서대로 출력해야 하며, 특정 사용자의 정보를 업데이트할 수 있어야 합니다.

 

* 해결 방법:

LinkedHashMap을 사용하여 사용자의 가입 순서를 유지하면서 사용자 정보를 저장합니다. LinkedHashMap은 요소가 추가된 순서대로 요소를 저장하고 반환하는 특성이 있어 이 문제에 적합합니다.

 

 

package Structure.ch07;

import java.util.LinkedHashMap;
import java.util.Map;

public class UserRegistrationSystem {
	
	private Map<String, User> users = new LinkedHashMap<>();
	
	// 정적 내부 클래스를
	static class User {
		String name; 
		String email; 
		public User(String name, String email) {
			this.name = name; 
			this.email = email;
		}
		@Override
		public String toString() {
			return "이름 : " + name + ", 이메일 : " + email;
		}
	} // end of inner User class 
	
	// 사용자 등록 기능 
	public void addUser(String name, String email) {
		// key, value(User)  
		users.put(email, new User(name, email));
	}
	
	// 사용자들 출력 기능 
	public void displayUsers() {
		for(User user : users.values()) {
			System.out.println(user);
		}
	}
	
	
	// 코드 테스트 (메인 함수) 
	public static void main(String[] args) {
		
		UserRegistrationSystem system = new UserRegistrationSystem();
		// 스캐너 
		User user1 = new User("홍길동1", "a@naver.com");
		User user2 = new User("홍길동2", "b@naver.com");
		User user3 = new User("홍길동3", "c@naver.com");
		
		system.addUser(user1.name, user1.email);
		system.addUser(user2.name, user2.email);
		system.addUser(user3.name, user3.email);
		
		// Map 구조는 기본적으로 순서를 보장하지 않지만 LinkedHashMap 을 사용해서 해결 
		// 가입한 순서대로 출력하는지 확인 
		system.displayUsers();		
	}
}

 

728x90
반응형