Map과 Hash Map 의 차이는??

박영광·2023년 10월 24일
1

Mapnew HashMap은 Java에서 데이터를 저장하고 관리하는 데 사용되는 자료구조와 관련된 용어

  1. Map:
    • Map은 인터페이스. 이 인터페이스는 키와 값의 쌍을 저장하고 관리할 수 있는 데이터 구조를 정의
    • Map 인터페이스의 주요 구현 클래스로는 HashMap, TreeMap, LinkedHashMap, 등이 있음.
    • Map 인터페이스를 사용하면 코드는 일반적으로 더 범용적이며, 구체적인 구현 클래스를 나중에 변경가능.
  2. new HashMap:
    • new HashMapHashMap 클래스의 인스턴스를 생성하는 Java 코드
    • HashMapMap 인터페이스의 구현 중 하나로, 키와 값의 쌍을 해시 테이블에 저장
    • new HashMap을 사용하면 HashMap 클래스의 새 인스턴스를 생성.

차이점:

  • Map은 인터페이스이므로 직접 인스턴스를 생성할 수 없음. 따라서 new HashMap과 같이 구체적인 구현 클래스의 인스턴스를 생성해야함.
  • new HashMap은 코드에서 구체적인 HashMap 인스턴스를 생성하는 방법을 나타내며, 이 인스턴스를 사용하여 데이터를 저장하고 관리.

예시:

javaCopy code
// Map 인터페이스를 사용하여 코드를 범용적으로 작성
Map<String, Object> myMap = new HashMap<String, Object>();

// 구체적인 HashMap 인스턴스를 생성하여 데이터를 저장
HashMap<String, Object> myHashMap = new HashMap<String, Object>();

주로 Map 인터페이스를 사용하여 코드를 작성하면 유연성이 높아지며, 나중에 필요에 따라 구체적인 구현 클래스를 변경할 수 있다. new HashMap은 구체적인 HashMap 인스턴스를 생성하는 코드이다.

즉, new HashMap는 빈 해시 맵(Hash Map) 객체를 생성하는 코드. 이렇게 생성된 해시 맵은 이후에 데이터를 저장하는 용도로 사용

해시 맵은 키-값 쌍을 저장할 수 있는 자료구조로, 데이터를 검색하고 가져오는 데 사용되며 HashMap은 Java에서 가장 많이 사용되는 컬렉션 중 하나이며, 데이터를 빠르게 검색할 수 있음

LMS 프로젝트 진행 중인 상담목록의 코드를 보면

@RequestMapping("adviceListVue.do")
	@ResponseBody
	public Map<String, Object> adviceListVue(Model model, @RequestParam Map<String, Object> paramMap, HttpServletRequest request,
			HttpServletResponse response, HttpSession session) throws Exception {
		
		logger.info("+ Start " + className + ".adviceListVue");
		logger.info("   - paramMap : " + paramMap);
		
		int pageSize = Integer.parseInt((String) paramMap.get("pageSize"));
		int currentPage = Integer.parseInt((String) paramMap.get("currentPage"));
		int startpoint = ( currentPage - 1 ) * pageSize;
		
		paramMap.put("pageSize", pageSize);
		paramMap.put("startpoint", startpoint);
		paramMap.put("ins_id", (String)session.getAttribute("loginId") );
		
		logger.info("ins+id ::::::" + paramMap);
		
		Map<String, Object> returnmap = new HashMap<String, Object>();
		
		int totalcnt = adviceMngService.totalcnt(paramMap);
		
		List<AdviceModel> adviceList = adviceMngService.adviceList(paramMap);
		returnmap.put("adviceList", adviceList);
		returnmap.put("totalcnt", totalcnt);
		returnmap.put("ins_id", (String)session.getAttribute("loginId"));
		
		logger.info("+ End " + className + ".adviceListVue");

		return returnmap;

이 코드에서 new HashMap<String, Object>()를 생성한 이유는 returnmap이라는 이름의 변수에 데이터를 저장하기 위해서입니다. returnmap은 JSON 형태의 데이터를 생성하여 클라이언트로 전달하기 위한 목적으로 사용되어짐.

따라서 returnmap은 이후에 검색된 데이터와 다른 정보를 포함하고 클라이언트로 전달할 때 사용되며 이것은 클라이언트에게 응답할 때 필요한 데이터를 담고 있는 객체이다.

profile
매일 1mm씩 성장하겠습니다

2개의 댓글

comment-user-thumbnail
2024년 9월 30일

좋은글 잘 읽었습니다. 혹시 velog 작성 과정에서 작성하신 글을 조금 인용했는데 혹시나 문제 있으시면 바로 지우겠습니다!

1개의 답글