반복 용량에 관계없이, 집합의 크기에 비례 시간을 필요로한다. HashSet에 대한 반복은 용량이 더 비싸기 때문에 용량에 비례합니다.
제 질문은 왜 LHS에 대한 반복 시간이 세트의 용량과 관계가 없습니까?
반복 용량에 관계없이, 집합의 크기에 비례 시간을 필요로한다. HashSet에 대한 반복은 용량이 더 비싸기 때문에 용량에 비례합니다.
제 질문은 왜 LHS에 대한 반복 시간이 세트의 용량과 관계가 없습니까?
LinkedHashSet은 내부적으로 LinkedList와 Set을 모두 포함하기 때문에. iterating 할 때, 당신은 HashSet이 아니라 LinkedList를 반복한다.
새로운 HashSet (1024 * 1024)의 용량을 가진 일반 HashSet을 생성하고, 1 요소를 추가하고 반복을 시도합니다 .HashSet에는 요소가 하나만 있지만 iterator는 기본의 모든 1MB 버킷을 검토해야합니다 그러나 LinkedHashSet이라면 iterator는 hashtable을 넘지 않을 것입니다. (get()과 contains()) 만 사용되지만 LinkedList (병렬 구조)를 거치면 하나의 요소가 있습니다. 당신이 (거의) 요소를 포함하는 버킷을 반복 필요가 HashSet의 이상
순회, 추가적인 시간을 필요로하는 빈 값을 제거하기 위해 간단히 -. 빈 요소를 정렬과 관련된 약간의 오버 헤드가
.링크 된 컬렉션의 본질은 모든 요소가 다음 요소를 가리키고 있기 때문입니다. 따라서 첫 번째부터 시작하여 많은 문제없이 다음 단계로 넘어가십시오. 이렇게하면 쉽게 반복 할 수 있습니다.