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
수정 아이콘
네 맞습니다. 굳이 꼭 그렇게 강요를 하지는 않는게 맞지만, 그냥 습관들이면 좋은 방법이라고 생각합니다.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
109790 [질문] 밤새고 다음날 좀 멀쩡히 활동할 수 있는 방법 있나요? [10] 치킨이 먹고 싶다27133 17/10/01 27133
109789 [질문] 삼국지13PK 한글판 구매 질문입니다 [5] 소시[탱구]3021 17/10/01 3021
109788 [질문] 컴퓨터 업그레이드 관련 문의 입니다. [6] 세체미1899 17/10/01 1899
109787 [질문] 턱걸이,팔굽혀펴기 등 운동 후 목통증 머리아픔 관련 질문드려요 [11] 李昇玗20631 17/10/01 20631
109786 [질문] [소전] 샷건질문입니다. [6] 키토1931 17/10/01 1931
109785 [질문] 노트북 쿨러 크기 0.2인치 상관 있을까요? [3] ThisisZero2451 17/10/01 2451
109784 [질문] 게임방송과 유투브에 저에 대한 비방영상이 올라왔습니다. [5] 삭제됨2394 17/10/01 2394
109783 [질문] JAVA 에서 Map , HashMap [13] 1llionaire8640 17/10/01 8640
109782 [질문] 혹시 호박 종류 잘아시는분 있을까요? [2] 으컁/1876 17/10/01 1876
109781 [질문] ps4 playstation plus&세이브 데이터 질문입니다 [1] AminG2904 17/10/01 2904
109780 [질문] 딥러닝/머신러닝? 관련하여 이미지 인식 질문드립니다.. [3] klados2336 17/10/01 2336
109779 [질문] 공항면세점 질문 드립니다(담배) [5] ooWniM1792 17/10/01 1792
109778 [질문] 음반 수집 관련해서 두가지 질문드립니다. [2] snobbism2055 17/10/01 2055
109777 [질문] 신차 도장 상태 질문(불량? 사진 있음) [7] 정성남자2855 17/10/01 2855
109776 [질문] G4 액정 특정부위 터치불량 purplesoul1653 17/10/01 1653
109775 [질문] 친척 대피용 장소 추천 받습니다 [23] 포이리에4336 17/10/01 4336
109774 [질문] 미드 홈랜드 4,5,6시즌 어떤가요? [6] 정공법2899 17/10/01 2899
109773 [질문] 던파 직업중 가장 꿀빠는직업? [5] 레몬커피4593 17/10/01 4593
109772 [질문] 스팀에서 게임 사면 한글화가 안되어있는게 많군요.. [8] 시작버튼3273 17/10/01 3273
109771 [질문] 직장 내 불쾌한 관계에 대해 여쭙고자합니다. [38] 나이스데이6474 17/10/01 6474
109770 [질문] 컴퓨터 케이스 질문드립니다. [6] 보조밥통1768 17/10/01 1768
109769 [질문] 새우 초밥 먹고 피부 알러지가 났는데.. [13] 해피새우3961 17/10/01 3961
109768 [질문] 컴퓨터 견적에 대해 전문가님들의 고견을 듣고 싶습니다. [9] Sith Lorder2397 17/10/01 2397
목록 이전 다음
댓글

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