Program Club

List vs ArrayList vs Dictionary vs Hashtable vs Stack vs Queue?

proclub 2020. 11. 27. 21:41
반응형

List vs ArrayList vs Dictionary vs Hashtable vs Stack vs Queue?


우리는 이들 (List, ArrayList, Dictionary, Hashtable, Stack, Queue 포함)을 사용하여 값을 유지하거나 다른 개체에 대한 참조를 컬렉션으로 유지할 수 있습니다.

그러나 내 질문은 언제 사용됩니까?


기울기

목록은 중복 항목을 허용하고 색인으로 액세스 할 수 있으며 선형 순회를 지원합니다.

  • ArrayList- 제네릭 유형을 지원하지 않는 배열 기반 목록입니다. 유형 안전성을 강요하지 않으며 일반적으로 피해야합니다.

  • 목록 -일반 유형을 지원하고 유형 안전성을 적용하는 배열 목록입니다. 연속적이지 않기 때문에 전체 목록에 대한 메모리를 다시 할당하지 않고도 크기를 늘릴 수 있습니다. 더 일반적으로 사용되는 목록 모음입니다.

해시

해시는 목록의 각 항목에 나중에 검색하는 데 사용되는 "키"를 제공하는 조회입니다. " 문자열 값 으로이 객체 를 찾을 것 입니다. 중복 키는 허용되지 않습니다. "와 같은 질문을 할 수있는 테이블 인덱스와 같은 해시를 생각해보십시오 .

  • HashTable- 색인 된 목록처럼 작동하는 기본 키-값 쌍 맵입니다.

  • 사전 -제네릭 유형을 지원하고 유형 안전성을 적용하는 해시 테이블입니다.

대기열

대기열은 목록의 항목에 액세스하는 방법을 제어합니다. 일반적으로 대기열에서 특정 방향 (앞쪽 또는 뒤쪽)으로 레코드를 푸시 / 팝합니다. 중간 랜덤 액세스에는 사용되지 않습니다.

  • 스택 -레코드를 서로 위에 푸시 / 팝하는 LIFO (후입 선출) 목록입니다.

  • 대기열 -레코드를 맨 위에 푸시하고 맨 아래에서 팝하는 FIFO (선입 선출) 목록입니다.


  • 목록에 중복 개체가 포함될 수 있습니다

  • ArrayList 는 IList가 존재하지 않는 이전 버전의 프레임 워크와의 호환성을위한 것입니다.

  • 사전 은 키 / 값 쌍을 저장하는 데 사용됩니다. 중복 키를 가질 수 없습니다.

  • Hashtable 은 기본적으로 중복 가능성이없는 목록입니다 (일부 시나리오에서 더 나은 성능).

  • 스택 은 객체가 추가 된 순서대로 (를 통해 Push()) 저장 하고, 객체를 검색 할 때 (를 통해 Pop()) LIFO 방식으로 스택에서 제거됩니다.

  • 는 FIFO라는 점을 제외하면 스택과 매우 유사합니다.


여기에 몇 가지 용도가 있습니다.

목록 : 목록 만 원하고 중복 된 항목 (예 : 사람 목록, 쇼핑 목록, 인생에서해야 할 일 목록)에 신경 쓰지 않는 경우.

대기열 : 예를 들어 대기열을 시뮬레이션하려는 경우 병원에는 대기열과 우선 순위 대기열 (응급 부서)이 있습니다. 분류는 누가 심각한 상태에 있고 치료를 받아야하는지 결정합니다.

또 다른 예는 쇼핑 대기열이며, 줄에있는 첫 번째 사람이 '보통'체크 아웃하는 첫 번째 사람입니다.

스택 : 내부 메모리에서 값을 함수 / 메소드로 전달할 때 푸시하고 팝하는 데 사용됩니다.

또 다른 흥미로운 용도는 비디오 게임 인벤토리 방법에서, 스택에 항목을 집어 (푸시) 스택에서 항목 (팝)을 떨어 뜨릴 수있는 것입니다.

해시 / 사전 : 일반적으로 조회 및 색인을 위해 데이터베이스에서 사용되는 것으로 보입니다.

시뮬레이션하려는 항목에 따라 다른 사람들과 동의하며 데이터 구조를 읽는 것이 편리합니다. 책은 도움이되지만 인터넷에도 풍부한 정보가 있습니다.

참고 URL : https://stackoverflow.com/questions/11902107/list-vs-arraylist-vs-dictionary-vs-hashtable-vs-stack-vs-queue

반응형