Skip to content

NHNAcademy4th-CIA/Chapter10

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Chapter 10 프로그래밍 문제 및 퀴즈 정의

Chapter 10 Quiz

  • Question 1:

What is meant by generic programming and what is the alternative?

Answer

Generic Programing 의 기본 개념은 Type또한 변수화 해서 외부에서 받겠다는 것입니다 .

이를 Parameterized Type이라 하고 , 대안으로는

List<Object>list = new ArrayList<>(); 이렇게 Object Type을 선언한 후

사용하면 됩니다.

  • Question 3:

What is an iterator and why are iterators necessary for generic programming?

Answer

Iterator 가 필요한 이유는

배열같은 경우에는 linear한 구조를 갖지만

Collection안에 있는 set , map , tree 같은 경우에는

linear하지 않습니다.

따라서 순회에 상당히 골치가 아프기 때문에 iterator이란 애를 만들어 순회를 합니다.

또 Collection<T> 로 Generic하게 정의되어 있음으로

Collection을 순회하기 위한 Iterator도 Iterator<T> 로 정의되어 있습니다.

  • Question 7:

What is the essential difference in functionality between a TreeMap and a HashMap?

Answer

구현에 사용되는 자료구조가 다릅니다.

TreeMap은 BinarySearchTree 의 일종인 Red-Black-Tree 가 사용됩니다.

따라서 Key값에 대해서 오름차순으로 자동정렬 됩니다.

HashMap은 HashTable을 사용하며 자동정렬을 지원하지 않습니다.

  • Question 8:

Explain what is meant by a hash code.

Answer

HashSet , HashMap 등은 HashTable을 사용합니다.

이 HashTabl은 배열로 , key값에 HashFunction 을 적용시켜 HashCode로 바꾼후 해당 index에 value를 저장합니다.

또 HashCode는 유일한 값임을 거의 보장합니다.

그렇다면 왜 이런 방법을 사용하는 것 일까요?

어차피 HashTable이라는 배열을 쓴다면 그냥 배열 만들어놓고 쓰면 안되는 걸까요??

HashCode로 바꾸지 않았을때의 문제점은 다음과 같습니다.

int Type에 대해서 생각해 봤을때

가능한 key가 21억개 이상 존재합니다.

그럼 전부 쓰지도 않을 공간을 항상 21억개씩 할당시켜야 합니다.

이렇게 모든 key 값에 대해서 배열을 할당시키는건 매우 비효율적입니다,

따라서 우리는 key가 주어지면 HashFunction을 사용해 HashCode를 만들고 이를 HashTable의 index값으로 사용합니다.

이 테크닉을 이용하면 배열의 크기를 미리 할당시켜 놓지 않고 유동적으로 사용이 가능합니다.

또 넣은 key가 배열의 75%정도를 넘어서면

다시 더 큰 배열을 만들어서 key값을 재할당 시킵니다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages