티스토리 뷰

HashMap 사용하는 도중, 1개의 Key값여러 개의 Value값을 가지고 싶었다.

사용하고 싶은데 구현 방법을 잘 몰랐다.

바보같이 

map.put("A",map.getOrDefault("A",new PriorityQueue<Point>());

대강 이렇게 짠 것 같았다..

그리고.. 저걸 어떻게 벨류 값을 넣지?라는 고민에 왕왕 빠져있었다... ㅠ____ㅠ

저렇게 하면 당연히 못 넣음.. 그리고 저기에 pq.offer(new Point(값)) 넣어도 문법 에러남 

위에 말은 무시하기!! 

import java.util.*;

static class Point {
		int r;
		int c;

		public Point(int r, int c) {
			this.r = r;
			this.c = c;
		}
	}

	public static void main(String[] args) {

		HashMap<String, ArrayList<Point>> map = new HashMap<>();

		map.put("a", new ArrayList<>());
		map.put("b", new ArrayList<>());
		System.out.println(map);

		map.get("a").add(new Point(1, 2));
		map.get("a").add(new Point(7, 8));
		
		map.get("b").add(new Point(100,200));
		map.get("b").add(new Point(300,600));

		

		for (String i : map.keySet()) {
			System.out.println(i);
			for (int j = 0; j < map.get(i).size(); j++) {
				System.out.print(map.get(i).get(j).r + " " + map.get(i).get(j).c);
				System.out.println();
			}
		}

	}

 

결과

 

이런 식으로 구현하면 된다.

map.put 으로 넣어주는게 아니라 map.get(키). add(넣고싶은 값)   키 값 찾고, 그 뒤에 값 추가하는 방식으로 구현하기

.add(offer) 에서 offer 부분은 Value를 여러개로 관리하고 싶은 자료구조를 사용하면 된다.

필자는 여기서 객체 ArrayList로 Value 값을 여러개 사용할 수 있게 관리해줬음.

리스트가 아니라 Value를 관리하고 싶은 것으로 선언하고 뒤에 해당 문법에 맞게 고쳐주면 된댜.

'Java is my life > 공부하다 지식공유' 카테고리의 다른 글

Java Collection  (0) 2022.10.21
메서드 반환타입 void와 return;  (0) 2022.10.06
2차원 배열 리스트  (0) 2022.10.02
댓글