searchable.hashtable

## Class HashTableIntLinked

- java.lang.Object
- - searchable.hashtable.HashTableIntLinked

- All Implemented Interfaces:
    Searchable

      class HashTableIntLinked
      extends java.lang.Object
      implements Searchable

  Implementace rozptýlené tabulky s vnitřním zřetězením.

  Popis: tabulka s vnitřním zřetězením

  Užití: Ve svém programu deklarujte proměnné typu HashTableIntLinked. K hešování bude použita funkce Hash.hash (key), proto prvky tabulky musí být typu SearchableElementWithOrdinalKey, jinak by stačil typ SearchableElement.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `private class` | `HashTableIntLinked.SearchIndex` Hledání prvku v tabulce.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private int` | `operationCtr` počítadlo provozního měření
    `private SearchableElement[]` | `store` úložiště

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `HashTableIntLinked(int arraySize)` Vyrobí rozptýlenou tabulku s vnitřním zřetězením.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `finalize()` Zruší instanci třídy TableIntLinked.
    `int` | `getCount()` Zjistí počet prvků v tabulce.
    `int` | `getOperationCounter()` Provozní měření.
    `void` | `getReadable(java.util.List<java.lang.String> aStrings)` Naplní kolekci řetězců čitelným obsahem tabulky.
    `int` | `getSortCounter()` Provozní měření.
    `void` | `insert(SearchableElement elem)` Vloží prvek do tabulky.
    `boolean` | `isEmpty()` Zjistí, zda je tabulka prázdná.
    `boolean` | `isFull()` Zjistí, zda je tabulka plná.
    `SearchableElement` | `remove(SearchableElement key)` Najde a odstraní prvek z tabulky.
    `SearchableElement` | `select(SearchableElement key)` Najde prvek v tabulce.
    `SearchableElement` | `update(SearchableElement elem)` Najde a upraví prvek z tabulky, případně vloží nový prvek do tabulky.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### store

          private SearchableElement[] store

      úložiště

    - #### operationCtr

          private int operationCtr

      počítadlo provozního měření

  - ### Constructor Detail

    - #### HashTableIntLinked

          public HashTableIntLinked(int arraySize)

      Vyrobí rozptýlenou tabulku s vnitřním zřetězením.

      Užití: zejména k inicializaci proměnných typu TableIntLinked.

      Parameters:
        `arraySize` - požadovaná kapacita tabulky

  - ### Method Detail

    - #### finalize

          protected void finalize()
                           throws java.lang.Throwable

      Zruší instanci třídy TableIntLinked.

      Užití: Přímo nepoužívejte! Volá se automaticky při destruci.

      Overrides:
        `finalize` in class `java.lang.Object`
      Throws:
        `java.lang.Throwable` - zděděná výjimka

    - #### isEmpty

          public boolean isEmpty()

      Zjistí, zda je tabulka prázdná.
      Specified by:
        `isEmpty` in interface `Searchable`
      Returns:
        true když vyhledávací struktura je prázdná, jinak false.

    - #### isFull

          public boolean isFull()

      Zjistí, zda je tabulka plná.
      Specified by:
        `isFull` in interface `Searchable`
      Returns:
        true když tabulka je plná, jinak false.

    - #### update

          public SearchableElement update(SearchableElement elem)

      Najde a upraví prvek z tabulky, případně vloží nový prvek do tabulky. Najde v tabulce prvek podle klíče elem.key a nahradí jej prvkem elem. Není-li prvek s hledaným klíčem dosud v tabulce, vloží se tam. Je-li tabulka plná, vyhodí se výjimka.
      Specified by:
        `update` in interface `Searchable`
      Parameters:
        `elem` - nový prvek, který má nahradit v tabulce prvek původní nebo který se má přidat do tabulky
      Returns:
        stará hodnota, která byla přepsána, nebo null

    - #### insert

          public void insert(SearchableElement elem)

      Vloží prvek do tabulky.

      Vyžaduje: not isFull

      Specified by:
        `insert` in interface `Searchable`
      Parameters:
        `elem` - prvek, který se má vložit

    - #### select

          public SearchableElement select(SearchableElement key)

      Najde prvek v tabulce. Najde prvek podle klíče key. K prvnímu přiblížení použije hašovací funkci. Hašovací funkce vrátí index prvku pole, ve kterém se má nacházet hledaný prvek tabulky. Jestliže se tam prvek nenachází, prohledávají se další prvky pole.
      Specified by:
        `select` in interface `Searchable`
      Parameters:
        `key` - klíč prvku, který se má najít
      Returns:
        je-li prvek v tabulce, tak nalezený prvek, jinak null

    - #### remove

          public SearchableElement remove(SearchableElement key)

      Najde a odstraní prvek z tabulky.

      Popis: Najde prvek pomocí hašovací funkce podle klíče key a odstraní jej z tabulky.

      Specified by:
        `remove` in interface `Searchable`
      Parameters:
        `key` - klíč prvku, který se má odstranit
      Returns:
        odstraněný prvek nebo null

    - #### getCount

          public int getCount()

      Zjistí počet prvků v tabulce.
      Specified by:
        `getCount` in interface `Searchable`
      Returns:
        aktuální počet prvků v tabulce

    - #### getReadable

          public void getReadable(java.util.List<java.lang.String> aStrings)

      Naplní kolekci řetězců čitelným obsahem tabulky.
      Specified by:
        `getReadable` in interface `Searchable`
      Parameters:
        `aStrings` - kolekce řetězců, která se má naplnit čitelným obsahem

    - #### getSortCounter

          public int getSortCounter()

      Description copied from interface: `Searchable`
      Provozní měření. Zjistí počet elementárních operací vyjmutí, vložení nebo záměny prvku během poslední operace sort.
      Specified by:
        `getSortCounter` in interface `Searchable`
      Returns:
        počet významných elementárních operací

    - #### getOperationCounter

          public int getOperationCounter()

      Description copied from interface: `Searchable`
      Provozní měření. Zjistí počet elementárních operací přesunu běžného prvku během poslední operace select.
      Specified by:
        `getOperationCounter` in interface `Searchable`
      Returns:
        počet významných elementárních operací