JX405기_비트/자료구조(Data Structure)

Day08-4 Map (HashMap, TreeMap)

_하루살이_ 2023. 2. 2. 16:54
package day0118;

import model.UserDTO;

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

public class Ex03Map {
    public static void main(String[] args) {
        Map<String, UserDTO> map = new TreeMap<>();
        //HashMap<String, UserDTO> map = new HashMap<>(); // 순서가 정렬되지 않음

		for (int i = 1; i <= 5; i++) {
            UserDTO u = new UserDTO();
            u.setId(i);
            u.setUsername("U" + i);
            u.setNickname("사용자" + i);
            map.put(u.getUsername(), u);
        }

        System.out.println(map.get("U1")); // key값을 아는 경우

        // map에 추가되어있는 set데이터 타입의 key값이 모두 출력
        for (String key : map.keySet()) {
            System.out.println(map.get(key));
        }

    }
}

 

비어있는 key값을 계산하는 메소드 computeIfAbsent()

package day0118;

import model.UserDTO;

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

public class Ex03Map {
    public static void main(String[] args) {
        Map<String, UserDTO> map = new TreeMap<>();

        UserDTO u = new UserDTO();
        u.setId(1);
        u.setUsername("U" + 1);
        u.setNickname("사용자" + 1);
        if (!map.containsKey(u.getUsername())){
            map.put(u.getUsername(), u);
        }

        UserDTO u2 = new UserDTO();
        u2.setId(2);
        u2.setUsername("U" + 2);
        u2.setNickname("사용자" + 2);
        if (!map.containsKey(u2.getUsername())){
            map.put(u2.getUsername(), u2);
        }

        UserDTO u3 = new UserDTO();
        u3.setId(3);
        u3.setUsername("U" + 3);
        u3.setNickname("사용자" + 3);
        if (!map.containsKey(u3.getUsername())){
            map.put(u3.getUsername(), u3);
        }

        UserDTO u4 = new UserDTO();
        u4.setId(4);
        u4.setUsername("U" + 4);
        u4.setNickname("사용자" + 4);
        if (!map.containsKey(u4.getUsername())){
            map.put(u4.getUsername(), u4);
        }

        System.out.println(map.get("u91"));

        map.computeIfAbsent("u91", k -> new UserDTO());
        // key 값이 비어있는지 계산하는 메소드, 없으면 어떻게 할지도 설정 (람다식 사용)

        System.out.println(map.get("u91"));

    }
}

 

 

HashMap 메소드

package day0118;

import model.UserDTO;

import java.util.ArrayList;
import java.util.HashSet;

public class HashMap {
    ArrayList<String> keySet = new ArrayList<>();
    ArrayList<UserDTO> valueList = new ArrayList<>();

    public UserDTO get(String key){
        if (keySet.contains(key)){
            int index = keySet.indexOf(key);
            return valueList.get(index);
        }

        return null;
    }

    public ArrayList<String> keySet() {
        return keySet;
    }

   public void put(String key, UserDTO userDTO){
        if (!keySet.contains(key)){
            keySet.add(key);
            valueList.add(userDTO);
        }
   }

   public void remove(String key){
        int index = keySet.indexOf(key);
        if (index != -1){
            keySet.remove(index);
            valueList.remove(index);
        }
   }
}