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
수정 아이콘
네 맞습니다. 굳이 꼭 그렇게 강요를 하지는 않는게 맞지만, 그냥 습관들이면 좋은 방법이라고 생각합니다.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
109825 [질문] 서울에 쾌적하고 안 붐비는 스타벅스 아시나요? [13] 잉여의슬픔4817 17/10/02 4817
109824 [질문] 윈7에서 플스리모트 할수있는 방법이 없나요? [8] Segen2786 17/10/02 2786
109823 [질문] 휴대전화 문의드립니다 Notorious2083 17/10/02 2083
109822 [질문] [LoL]챔피언 선택창에서 바로 스킨구매 안되는 이유가 뭔가요? [8] Hisoka3018 17/10/02 3018
109821 [질문] 뮤직비디오 하나를 찾습니다. 아이유1508 17/10/02 1508
109820 [질문] 미드 하나 찾습니다.. [3] TheGirl1590 17/10/02 1590
109818 [질문] 내가 볼 수 있는 건 보여질 수 있다는 항상 진실인가요 [6] makka2293 17/10/02 2293
109817 [질문] 차기 발롱도르는 누가 가능성이 높을까요? [10] swear3071 17/10/02 3071
109816 [질문] 퇴직 후 노후대비 어떻게 하시는지요...? [10] nexon2806 17/10/02 2806
109815 [질문] 몇일전부터 왼쪽 귀에서 "바스락 바스락" 거리는 소리가 납니다. [10] 파쿠만사13033 17/10/02 13033
109814 [질문] 중고 핸드폰 매장 괜찮을까요? [2] 드림2436 17/10/02 2436
109813 [질문] 컴퓨터에 스피커를 추가 설치하면 기존 스피커에서도 소리가 같이 나오나요? [1] 사장2163 17/10/02 2163
109812 [질문] 괜찮은 온라인 음반매장 추천받습니다!! [4] AeonBlast2615 17/10/02 2615
109811 [질문] 드래곤볼 만화책 마인부우전 마지막 부분질문입니다. [9] 공부맨3987 17/10/02 3987
109810 [질문] 삼국지 13pk 위명을 할려면 어덯게 해야 하나요?? [1] 라캉~7043 17/10/02 7043
109809 [질문] 귀에서 이상한 소리가 납니다. [4] 예인6604 17/10/02 6604
109808 [질문] 퇴직연금 DC형이면 중간정산이 손해인가요 이익인가요? [4] eosdtghjl2920 17/10/02 2920
109807 [질문] 경력증명서 질문입니다 [1] 마제스티1896 17/10/01 1896
109806 [질문] 플스게임은 어떤개념인가요? [8] 공부맨3445 17/10/01 3445
109805 [질문] 비전공자중에서 프로그래밍 하시는 분들 질문드립니다 [4] 칼 오베1893 17/10/01 1893
109804 [질문] 게임을 찾습니다. [4] 삭제됨1821 17/10/01 1821
109803 [질문] 오늘 양양고속도로에서 오토바이를 봤습니다. [9] 하자3348 17/10/01 3348
109802 [질문] 좋아하는 인생 캐릭터가 있나요? [25] 세로토닌2405 17/10/01 2405
목록 이전 다음
댓글

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