:: 게시판
:: 이전 게시판
|
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다. 통합 규정을 준수해 주십시오. (2015.12.25.)
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
17/10/01 15:02
https://docs.oracle.com/javase/7/docs/api/java/util/Map.html 보시면 아시겠지만
Map은 인터페이스라서 new Map() 하면 일일히 내부 알고리즘을 직접 구현하셔야됩니다. HashMap은 Hash key 기반의 map을 이미 구현한 클래스이구요.
17/10/01 15:06
(수정됨) 아래와 같은 겁니다
개 상근이 = new 그레이트_피레니즈(); 개 독구 = new 똥개(); 상근이->앉아(); 독구->앉아();
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 이 책이 정말 좋은데 학습하세요!
17/10/01 19:07
예전 플래시로 배우는 자바(지금은 자바의 정석일겁니다.)에서
인터페이스에 대해서 스타크래프트 유닛으로 설명한게 있습니다. 찾아보니 무료로 공개했네요 http://cafe.naver.com/javachobostudy/44
17/10/01 19:53
위에 G스타님 말씀처럼 Map 이 인터페이스라서 그런거죠.
Map<String, Object> result = Maps.newHashMap(); 요런식으로 할때도 있습니다.
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냐에 따라서 성능차이가 많이 나기 시작해서 언젠가는 커스터마이징이 필요하게 됩니다. 따라서 그냥 처음부터 그렇게 습관을 들이면 좋을 것 같아요.
17/10/02 20:14
자세한 설명 감사드립니다. 인터페이스를 안쓰고
HashMap result = new HashMap() 이 원래 가능한데, 인터페이스인 Map 을 쓰는 이점이 있어서 그렇게 쓰는 거란 말씀이시군요!
|