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라는 점을 제외하면 스택과 매우 유사합니다.
여기에 몇 가지 용도가 있습니다.
목록 : 목록 만 원하고 중복 된 항목 (예 : 사람 목록, 쇼핑 목록, 인생에서해야 할 일 목록)에 신경 쓰지 않는 경우.
대기열 : 예를 들어 대기열을 시뮬레이션하려는 경우 병원에는 대기열과 우선 순위 대기열 (응급 부서)이 있습니다. 분류는 누가 심각한 상태에 있고 치료를 받아야하는지 결정합니다.
또 다른 예는 쇼핑 대기열이며, 줄에있는 첫 번째 사람이 '보통'체크 아웃하는 첫 번째 사람입니다.
스택 : 내부 메모리에서 값을 함수 / 메소드로 전달할 때 푸시하고 팝하는 데 사용됩니다.
또 다른 흥미로운 용도는 비디오 게임 인벤토리 방법에서, 스택에 항목을 집어 (푸시) 스택에서 항목 (팝)을 떨어 뜨릴 수있는 것입니다.
해시 / 사전 : 일반적으로 조회 및 색인을 위해 데이터베이스에서 사용되는 것으로 보입니다.
시뮬레이션하려는 항목에 따라 다른 사람들과 동의하며 데이터 구조를 읽는 것이 편리합니다. 책은 도움이되지만 인터넷에도 풍부한 정보가 있습니다.
'Program Club' 카테고리의 다른 글
| 나는 두 개의 클래스가 "싸울"수있는 프로그램을 작성했습니다. (0) | 2020.11.28 |
|---|---|
| 기본 제공 Python 유형에 사용자 지정 메서드 / 속성을 추가 할 수 있습니까? (0) | 2020.11.28 |
| Pandas 데이터 프레임을 시리즈로 변환 (0) | 2020.11.27 |
| MockMvc를 SpringBootTest와 함께 사용하는 것과 WebMvcTest를 사용하는 것의 차이점 (0) | 2020.11.27 |
| Java 스트림 toArray ()는 특정 유형의 배열로 변환 (0) | 2020.11.27 |