PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2017/10/01 14:41:07
Name 1llionaire
Subject [질문] JAVA 에서 Map , HashMap

Map result = new HashMap();

요런 식으로 선언을 하는 걸 봤는데요.

왜 앞은 Map 이고 뒤는 HashMap 으로 선언하는 건가요>
둘의 차이가 뭐고, 앞뒤가 다른 이유는 무엇인가요?

뒷부분을 new Map(); 로 안하는 이유가 있나요?



통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
arq.Gstar
17/10/01 15:02
수정 아이콘
https://docs.oracle.com/javase/7/docs/api/java/util/Map.html 보시면 아시겠지만
Map은 인터페이스라서 new Map() 하면 일일히 내부 알고리즘을 직접 구현하셔야됩니다.
HashMap은 Hash key 기반의 map을 이미 구현한 클래스이구요.
1llionaire
17/10/01 15:55
수정 아이콘
명쾌한 설명 정말 감사드립니다. 링크 주신 부분도 다시 한번 정독해 볼게요!
Supervenience
17/10/01 15:06
수정 아이콘
(수정됨) 아래와 같은 겁니다
개 상근이 = new 그레이트_피레니즈();
개 독구 = new 똥개();
상근이->앉아();
독구->앉아();
1llionaire
17/10/01 15:56
수정 아이콘
재미있는 예시 감사드립니다~~
자마린
17/10/01 15:09
수정 아이콘
(수정됨) https://stackoverflow.com/questions/18329311/reason-for-list-list-new-arraylist
그 이유의 답변은 여기서 대충 다 볼 수 있을거 같습니다.

요약하자면 다형성이 이유인데... 인터페이스로 선언하는 이유는 그 [다형성] 때문이죠.
Map 의 기본적인 틀은 K,V 쌍으로 데이터를 기록하는 데 있고, 그 기본적인 것들을 Map 인터페이스를 통해
여러가지 Map들을 사용할 수 있으니까요.

왜 그렇게 구현해야 하는가에 대해선
http://www.hanbit.co.kr/store/books/look.php?p_code=B9860513241
이 책이 정말 좋은데 학습하세요!
1llionaire
17/10/01 15:55
수정 아이콘
답변 정말 감사합니다. 책 추천해주신 것도 한번 봐야겠네요!
17/10/01 19:07
수정 아이콘
예전 플래시로 배우는 자바(지금은 자바의 정석일겁니다.)에서
인터페이스에 대해서 스타크래프트 유닛으로 설명한게 있습니다.

찾아보니 무료로 공개했네요

http://cafe.naver.com/javachobostudy/44
1llionaire
17/10/01 19:34
수정 아이콘
감사합니다. 스타 유닛으로 설명하면 이해가 잘 되겠네요!
17/10/01 19:53
수정 아이콘
위에 G스타님 말씀처럼 Map 이 인터페이스라서 그런거죠.
Map<String, Object> result = Maps.newHashMap(); 요런식으로 할때도 있습니다.
1llionaire
17/10/01 21:17
수정 아이콘
오 감사합니다. 이상하게 저도 본문에 <String, Object> 를 썼는데 태그로 인식했는지 다 안나와버렸네요..
17/10/02 13:14
수정 아이콘
인터페이스를 왜 쓰느냐에 대한 이야기가 별로 없어서 설명 드리자면, Map이라는 공통된 인터페이스로 개발을 해두게 되면 나중에 HashMap이 아닌 TreeMap 등으로 바꿔야 하거나 특정한 Map을 구현하여 커스터마이징을 해야 된다고 하면, Map result = new HashMap()을 Map result = new TreeMap() 또는 Map result = new MyMap()으로만 바꿔주면 나머지는 코드에 손을 댈 필요가 없어집니다. 그게 인터페이스를 사용하는 이유입니다. 아직 초보 단계에서는 HashMap이든 TreeMap이든 따질 필요가 없지만, 더 큰 프로젝트, 더 많은 데이터를 다루기 시작하면 Hash냐 Tree냐에 따라서 성능차이가 많이 나기 시작해서 언젠가는 커스터마이징이 필요하게 됩니다. 따라서 그냥 처음부터 그렇게 습관을 들이면 좋을 것 같아요.
1llionaire
17/10/02 20:14
수정 아이콘
자세한 설명 감사드립니다. 인터페이스를 안쓰고
HashMap result = new HashMap() 이 원래 가능한데, 인터페이스인 Map 을 쓰는 이점이 있어서 그렇게 쓰는 거란 말씀이시군요!
17/10/03 00:09
수정 아이콘
네 맞습니다. 굳이 꼭 그렇게 강요를 하지는 않는게 맞지만, 그냥 습관들이면 좋은 방법이라고 생각합니다.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
109783 [질문] JAVA 에서 Map , HashMap [13] 1llionaire8641 17/10/01 8641
109782 [질문] 혹시 호박 종류 잘아시는분 있을까요? [2] 으컁/1878 17/10/01 1878
109781 [질문] ps4 playstation plus&세이브 데이터 질문입니다 [1] AminG2908 17/10/01 2908
109780 [질문] 딥러닝/머신러닝? 관련하여 이미지 인식 질문드립니다.. [3] klados2337 17/10/01 2337
109779 [질문] 공항면세점 질문 드립니다(담배) [5] ooWniM1793 17/10/01 1793
109778 [질문] 음반 수집 관련해서 두가지 질문드립니다. [2] snobbism2056 17/10/01 2056
109777 [질문] 신차 도장 상태 질문(불량? 사진 있음) [7] 정성남자2856 17/10/01 2856
109776 [질문] G4 액정 특정부위 터치불량 purplesoul1655 17/10/01 1655
109775 [질문] 친척 대피용 장소 추천 받습니다 [23] 포이리에4338 17/10/01 4338
109774 [질문] 미드 홈랜드 4,5,6시즌 어떤가요? [6] 정공법2901 17/10/01 2901
109773 [질문] 던파 직업중 가장 꿀빠는직업? [5] 레몬커피4594 17/10/01 4594
109772 [질문] 스팀에서 게임 사면 한글화가 안되어있는게 많군요.. [8] 시작버튼3280 17/10/01 3280
109771 [질문] 직장 내 불쾌한 관계에 대해 여쭙고자합니다. [38] 나이스데이6478 17/10/01 6478
109770 [질문] 컴퓨터 케이스 질문드립니다. [6] 보조밥통1769 17/10/01 1769
109769 [질문] 새우 초밥 먹고 피부 알러지가 났는데.. [13] 해피새우3965 17/10/01 3965
109768 [질문] 컴퓨터 견적에 대해 전문가님들의 고견을 듣고 싶습니다. [9] Sith Lorder2399 17/10/01 2399
109767 [질문] 블루스택이 클릭을 인식못하는 경우에 대해 질문드립니다. [6] 8년째도피중9254 17/09/30 9254
109766 [질문] 스타1 2:2 팀플 질문입니다. [9] 슬라임2995 17/09/30 2995
109765 [질문] BMW 코딩에 대해 문의드려요 [2] 임윤아3267 17/09/30 3267
109764 [질문] 소설을 찾고 있습니다. [2] 코메다1756 17/09/30 1756
109763 [질문] 스타나 배그 잘하고싶은데 쉽게 피곤해지네요 [7] 머리띠3118 17/09/30 3118
109762 [질문] 모니터 144hz 무난히 돌아갈까요? [6] I.O.I2804 17/09/30 2804
109761 [질문] 학원을 다녀볼까 하는데 추천 좀 해주세요~ [4] 타키쿤2504 17/09/30 2504
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로