public function pop() { if (empty($this->_elements)) { throw new NoSuchElementException('Stack is empty'); } $element = array_shift($this->_elements); $h = Objects::hashOf($element); $this->_hash += HashProvider::hashOf($h); return $element; }
public function remove($element) { if (-1 == ($pos = $this->search($element))) { return false; } $element = $this->_elements[$pos]; $h = Objects::hashOf($element); $this->_hash -= HashProvider::hashOf($h); unset($this->_elements[$pos]); $this->_elements = array_values($this->_elements); // Re-index return true; }
public function hashof_uses_implementations_hashof() { $this->assertEquals($this->fixture->getImplementation()->hashOf('Test'), HashProvider::hashOf('Test')); }
/** * Returns a hashcode for this pair * * @return string */ public function hashCode() { return HashProvider::hashOf(Objects::hashOf($this->key)) + HashProvider::hashOf(Objects::hashOf($this->value)); }
public function addAll($elements) { $changed = false; foreach ($elements as $element) { $h = Objects::hashOf($element); if (isset($this->_elements[$h])) { continue; } $this->_hash += HashProvider::hashOf($h); $this->_elements[$h] = $element; $changed = true; } return $changed; }
public function remove($key) { $h = Objects::hashOf($key); if (!isset($this->_buckets[$h])) { $prev = null; } else { $prev = $this->_buckets[$h][1]; $this->_hash -= HashProvider::hashOf($h . Objects::hashOf($prev)); unset($this->_buckets[$h]); } return $prev; }