GnuSmalltalkUsersGuide:BaseChapter 085
- HashedCollection
HashedCollection
네임스페이스 Smalltalk에 정의됨
슈퍼클래스: Collection
범주: 컬렉션-비정렬
- 나는 객체를 특유의 방식으로 보관할 수 있는 해싱된 컬렉션으로서, 컬렉션 내 그 객체들에 대해 빠른 응답을 제공한다.
HashedCollection 클래스: 인스턴스 생성
new
기본크기로 된 수신자의 새 인스턴스를 응답하라.
new: anInteger
주어진 용량(capacity)으로 된 수신자의 새 인스턴스를 응답하라.
withAll: aCollection
요소들이 aCollection에 위치한 컬렉션을 응답하라.
HashedCollection: 접근하기
add: newObject
newObject를 집합으로 추가하되 집합이 그것의 발생을 이미 포함하지 않을 경우에만 추가해야 한다. 중복이 발견될 경우 실패하지 말라. anObject를 응답하라.
at: index
이 클래스의 인스턴스를 대상으로 해당 메서드를 호출해서는 안 된다.
at: index put: value
이 클래스의 인스턴스를 대상으로 해당 메서드를 호출해서는 안 된다.
HashedCollection: builtins
primAt: anIndex
Private - 수신자에 대한 해시 테이블의 anIndex번째 항목을 응답하라. basicAt: 대신 이를 이용하면 표현을 더 쉽게 변경할 수 있다.
primAt: anIndex put: value
Private - 수신자에 대한 해시 테이블의 anIndex번째 항목에 값을 보관하라. basicAt:put: 대신 이를 이용하면 표현을 더 쉽게 변경할 수 있다.
primSize
Private - 수신자에 대한 해시 테이블의 크기를 응답하라. basicSize 대신 이를 이용하면 표현을 더 쉽게 변경할 수 있다.
HashedCollection: 복사하기
deepCopy
수신자의 깊은 복사를 리턴한다 (인스턴스 변수는 수신자의 인스턴스 변수에 대한 복사본이다)
shallowCopy
수신자의 얕은 복사를 리턴한다 (인스턴스 변수가 복사되지 않는다)
HashedCollection: 컬렉션의 요소 열거하기
do: aBlock
집합의 nil이 아닌 멤버를 열거하라.
HashedCollection: 재해싱하기
rehash
수신자를 재해싱하라.
HashedCollection: 제거하기
remove: oldObject ifAbsent: anExceptionBlock
집합에서 oldObject를 제거하라. 발견될 경우 oldObject를 응답하고, 그 외의 경우 anExceptionBlock을 평가하여 그 값을 응답하라.
HashedCollection: 저장하기와 로딩하기
postLoad
객체 로딩 이후 호출된다; 정체성 객체(identity object)는 그들의 해시를 변형할 가능성이 매우 높으므로 컬렉션을 재해싱하라.
postStore
객체를 덤프한 이후에 호출된다. 아무 일도 하지 않는다 - 기본적으로 이는 #postLoad를 기본값으로 호출하기 때문이다.
HashedCollection: 보관하기
storeOn: aStream
수신자로 컴파일하는 일부 스몰토크 코드를 aStream 상에 보관하라.
HashedCollection: 컬렉션 검사하기
= aHashedCollection
두 집합이 같은 멤버십을 갖는 경우 true를, 그렇지 않은 경우 false를 리턴하라.
capacity
수신자가 증가하기 이전에 얼마나 많은 요소를 보유할 수 있는지 응답하라.
hash
집합의 멤버에 대한 해시 코드를 리턴하라. 순서는 중요하지 않으므로 가환연산자를 사용해 해시값을 계산한다.
includes: anObject
수신자가 anObject의 인스턴스를 포함하는지 응답하라.
isEmpty
수신자가 비었는지 응답하라.
occurrencesOf: anObject
anObject의 발생횟수를 리턴하라. 우리는 집합이므로 0 또는 1이 되겠다. Nil은 절대 집합 안에 직접적으로 존재하지 않으므로 특수 케이싱(special case)한다 (결과는 항상 1이다).
size
수신자의 크기를 응답하라.