[Java] Map 인터페이스

yedy·2023년 6월 13일
0

[JAVA]

목록 보기
2/2
post-thumbnail

파이썬의 딕셔너리랑 비슷함!!

특징

  • 키와 값, 이렇게 쌍으로 구성된 객체르 저장하는 자료 구조\
  • 맵이 사용하는 키와 값도 모두 객체
  • 키는 중복되지 않고 하나의 값에만 매핑되어 있으므로 키가 있다면 대응하는 값을 얻을 수 있다.
  • Map 객체에 같은 키로 중복 저장되지 않도록 하려면 Set 객체처럼 키로 사용할 클래스에 대한 hashCode()와 equals() 메서드를 오버로딩 해야 한다.

key 값은 중복X 하나여야 한다!!
ex) 이름 : [예지,이라,재린,];

pair 값 저장 하려면 그때 Map을 사용한다!
거기서 중복된 값들은 저장하지 못하게 하고 싶으면 HashMap!
검색에 용이함!

여기서 put을 자주 씀!
list에서는 add로 추가 해줬지만
map에서는 put으로 키-값으로 저장!!

✔️ 사진 업로드 할때 사용하는 Map!

   private Map<String, String> upload(HttpServletRequest request, HttpServletResponse response){
	 
	   Map<String, String> articleMap = new HashMap<>(); // 중복 허용 안할라고 해쉬맵 쓴거임
	   // articleMap은 업로드된 파일 및 폼 필드의 데이터를 저장하기 위한 해시맵
	   String encoding = "utf-8";
	   File currentDirPath = new File(ARTICLE_IMAGE_REPO);
	   DiskFileItemFactory factory = new DiskFileItemFactory();
	   factory.setRepository(currentDirPath);
	   factory.setSizeThreshold(1024*1024);
	   ServletFileUpload upload = new ServletFileUpload(factory);
	   
	   try {
		   List items = upload.parseRequest(request);
		   for (int i=0; i <items.size(); i++) {
			   FileItem fileItem = (FileItem) items.get(i);
			   if(fileItem.isFormField()) {  //파일이 아니묜
				   System.out.println(fileItem.getFieldName()+"="+fileItem.getString(encoding));
				   articleMap.put(fileItem.getFieldName(),fileItem.getString(encoding)); //이름과 값 articleMap에 저장
				   
			   }else { // 파일이라면 파일 업로드 처리
				   System.out.println("파일 이름 : "+fileItem.getFieldName());
				   System.out.println("파일 크기 : "+fileItem.getSize());
				   
				   if (fileItem.getSize()>0) { //파일 크기가 0보다 큰 경우에만 처리..
					   int idx = fileItem.getName().lastIndexOf("\\");
					   if(idx == -1) {
						   idx = fileItem.getName().lastIndexOf("/");
					   }
					   
					   String fileName = fileItem.getName().substring(idx+1); //파일명 fileName 변수에 저장
					   System.out.println("파일명 : "+fileName);
					   articleMap.put(fileItem.getFieldName(), fileName);
					   File uploadFile = new File(currentDirPath+"\\"+fileName); //업로드된 파일이 저장될 경로를 설정
					   fileItem.write(uploadFile);
				   }
			   }
		   }
	   }catch (Exception e) {
		   e.printStackTrace();
	}
	   return articleMap;
   }

profile
공주 개발자

0개의 댓글