코드 스 니펫을 따라 생성되는 setOfStrings
것과 hashSetOfStrings
생성되는 차이점은 무엇입니까 ?
val setOfStrings = setOf("A", "B", "C")
val hashSetOfStrings = hashSetOf("A", "B", "C")
그들은 항상 같은 유형을 가지고 있습니까? 같은 성능?
그들 사이의 가장 중요한 차이점은 가변성 입니다.
setOf()
Set
인터페이스 를 구현하는 객체를 반환 하지만 아마도 변경 불가능 ( MutableSet
하위 인터페이스를 구현하지 않음 )이므로 변경할 수 없습니다.
(온라인 문서 는 그것이 반드시 불변을 의미 read-only
하지는 않는다고 명시하고 있습니다 . 그러나 그렇게 가정하는 것이 가장 안전합니다.)
구체적인 유형을 지정하지 않습니다. 이는 성능, 메모리 사용량 및 / 또는 유사성을 개선하기 위해 향후 변경 될 수 있도록하기위한 것입니다. 지금도 그것은 반환 할 수 kotlin.collections.EmptySet
, java.util.Collections.SingletonSet
또는를 kotlin.collections.LinkedHashSet
; 후자는 표준에 비해 더 빠르고 (예측 가능한) 반복을가집니다 HashSet
.
setOf()
효율적이고 변경 불가능한 세트를 원하고 정확한 유형은 신경 쓰지 않을 때도 마찬가지 입니다.
hashSetOf()
반면에는 항상 kotlin.collections.HashSet
(또는 하위 클래스)를 반환하며 항상 변경 가능합니다. 특정 유형이 필요할 때 사용합니다.
그리고 변경 가능한 집합을 원하지만 정확한 유형에 대해 신경 쓰지 않는다면을 호출하는 것이 가장 좋습니다 mutableSetOf()
.
(물론 일반적으로 실제로 필요하지 않은 경우 구체적인 유형을 지정하지 않는 것이 가장 좋습니다. 그러면 코드를 유연하게 유지할 수 있습니다.)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다