Java 컬렉션에는 TreeSet, TreeMap이 있지만 TreeList는 없습니다. 그 이유는 무엇입니까?


최상의 답변

목록,지도 및 집합의 차이점에 대해 생각해보십시오.

지도는 키를 사용하여 항목을 찾을 수있는 구조입니다. 조회를 위해 디자인 할 때 키 비교가 많고 빠르게 검색해야한다는 사실을 알게됩니다. 트리는 분기 내에서 키를 구성하여 키 비교 프로세스의 속도를 높입니다. 이렇게하면 키 비교 수가 줄어 듭니다.

세트에는 중복 항목이 없으므로 항목을 추가 할 때마다 기존 항목과 비교하여 “중복인지 확인해야합니다. 이제 Map과 동일한 문제로 돌아 왔으므로 Tree를 사용하여 항목을 정리하여 비교를 줄이십시오.

목록에는 순서 만 있으므로 목록을 쉽게 설계 할 수 있습니다. ” t 목록 순서에서 다음 (또는 이전) 항목을 얻기 위해 비교가 필요합니다.

따라서 트리가 더 나은 맵 또는 세트를 만드는 데 도움이 될 수 있지만 더 나은 목록을 만드는 데 실제로 도움이되지는 않습니다. .

항목이 정렬 순서로 목록에 삽입되는 정렬 된 목록에 대해 이야기하는 경우 이제 비교로 돌아갑니다. 정렬을 위해 트리가 정렬 된 목록을 만드는 데 도움이 될 수 있습니다.

답변

목록은 정렬되어 있습니다. collection-즉, i 번째 요소에 무작위로 액세스 할 수 있어야합니다. 컬렉션이 내부적으로 요소를 섞는 경우 삽입 순서는 내부 데이터 구조의 요소 순서와 동일하지 않습니다. 따라서 더 이상 인덱스 기반 액세스에 의존 할 수 없습니다. 따라서 Sun은 SortedList 또는 TreeList 클래스를 제공하지 않았습니다. Collections.sort (..)를 사용하여 동일한 작업을 수행 할 수 있습니다.

Apache commons-collections는 TreeList 클래스를 제공합니다 ( TreeList (Commons Collections 3.2.1 API) )하지만 정렬 된 목록이 아니며 트리 데이터 구조를 사용하여 내부적으로 요소를 저장하기 때문에 호출됩니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다