본문 바로가기
Java/Java 예제

Java HashMap 예제

by ssury94 2024. 12. 17.

ArrayList를 다루는 OnlineStore 클래스는 controller 패키지에

product 객체를 다루는 Product 클래스는 entity 패키지에 두고 코딩해보자.

import controller.OnlineStore;
import entity.Product;

public class HashMapMain {
    public static void main(String[] args) {
        OnlineStore store = new OnlineStore();
        // TODO: 최소 3개의 상품을 생성하고 store에 추가하세요.
        Product product1 = new Product("P001", "스마트폰", 899000.0);
        Product product2 = new Product("P002", "노트북", 1299000.0);
        Product product3 = new Product("P003", "무선이어폰", 199000.0);

        store.addProduct(product1);
        store.addProduct(product2);
        store.addProduct(product3);


        // TODO: 모든 상품 정보를 출력하세요.
        store.displayAllProducts();


        // TODO: ID로 한 개의 상품을 검색하고 그 정보를 출력하세요.
        System.out.println();
        store.findProduct("P002").print();

        // TODO: 한 개의 상품을 삭제하세요.
        store.removeProduct("P001");

        // TODO: 삭제 후 모든 상품 정보를 다시 출력하세요.
        System.out.println();
        store.displayAllProducts();
        
    }
}

 

 

package entity;

public class Product {

    private String id;
    private String name;
    private double price;
    // TODO: Product 클래스의 디폴트 생성자를 만드세요.
    public Product() {
    }
    // TODO: Product 클래스의 다음 생성자를 구현하세요.
    // 힌트: id, name, price를 매개변수로 받아 초기화합니다.
    public Product(String id, String name, double price) {
        this.id = id;
        this.name = name;
        this.price = price;
    }
    // TODO: print 함수
    // 힌트: "ID: [id], 상품명: [name], 가격: [price]원" 형식출력.
    public void print(){
        System.out.println("ID: "+id+", 상품명: "+name+", 가격: "+price+"원");
    }




    // TODO: getter 메소드들을 구현하세요.
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }
}

 

 

 

package controller;

import entity.Product;

import java.util.HashMap;
import java.util.Map;

public class OnlineStore {
    private HashMap<String, Product> products;

    public OnlineStore() {
        // TODO: products HashMap을 초기화하세요.
        products = new HashMap<>();
    }

    public void addProduct(Product product) {
        // TODO: 상품을 HashMap에 추가하세요. 상품 ID를 키로 사용합니다.
        // 힌트: put 메소드를 사용하세요.
        products.put(product.getId(),product);
    }

    public void displayAllProducts() {
        // TODO: 모든 상품의 정보를 출력하세요.
        // 힌트: entrySet()을 사용하여 HashMap을 순회하세요.
        for(Map.Entry<String,Product> productPair: products.entrySet()){
            productPair.getValue().print();
        }
    }

    public Product findProduct(String id) {
        // TODO: 주어진 ID로 상품을 찾아 반환하세요.
        Product product = products.get(id);
        if(products!=null){
            return product;
            // 힌트: get 메소드를 사용하세요.
            // 키 값으로 바로 찾는다!
        }else{
            // 상품을 찾지 못한 경우 null 반환
            return null;
        }
    }

    public void removeProduct(String id) {
        // TODO: 주어진 ID의 상품을 HashMap에서 제거하세요.
        // 힌트: remove 메소드를 사용하세요.
        products.remove(id);
    }



}