Java – Data Structures – Hashtable

Hashtable-ը օրիգինալ java.util-ի մի մասն է և իրենից ներկայացնում է Dictionary-ի իրականացումը:

Սակայն, Java 2 վերամշակել է Hashtable-ը այնպես, որպեսզի այն իրականացնի նաև քարտեզի ինտերֆեյսը՝ Map interface: Այսպիսով, Hashtable-ը այժմ ինտեգրված է հավաքածուների շրջանակում: Այն նման է HashMap-ին, բայց սինխրոնիզացված է:

Ինչպես HashMap-ը Hashtable-ը նույնպես պահպանում է բանալի/արժեք զույգերը hash table-ում՝ աղյուսակում: Hashtable-ի կիրառման ժամանակ պետք է նշել այնպիսի մի օբյեկտ, որն օգտագործվում է որպես բանալի և այն արժեքը, որը դուք ցանկանում եք կապել այդ բանալին: Այնուհետև բանալին հեշացվում է, և արդյունքում ստացված հեշ կոդը օգտագործվում է որպես ինդեքս։

Ստորև ներկայացված են HashTable դասի կողմից տրամադրված կոնստրուկտորների ցանկը:

Sr.No Constructor & Description
1 Hashtable( )

Սա hash աղյուսակի կանխադրված կոնստրուկտորն է, որը ստեղծում է Hashtable դասի կրկնօրինակը:

2 Hashtable(int size)

Այս կոնստրուկտորը ընդունում է ամբողջական պարամետրերը և ստեղծում է hash աղյուսակ, որն ունի նախնական չափ սահմանված integer value size-ի կողմից։

3 Hashtable(int size, float fillRatio)

Սա ստեղծում է hash աղյուսակ, որի նախնական չափը սահմանված է fillRatio-ի կողմից: Այս հարաբերակցությունը պետք է լինի 0.0-ի և 1.0։ Եվ այն սահմանում է, թե որքան հագեցած աղյուսակը կարող է լինել մինչև այն մեծացնելն։

4 Hashtable(Map < ? extends K, ? extends V > t)

Այն ստեղծում է Hashtable սահմանված mapping-ներով։

 

Map interface-ի կողմից սահմանված մեթոդներից բացի, Hashtable-ը սահմանում է հետևյալ մեթոդները `

Sr.No Method & Description
1 void clear( )

Վերագործարկում և դատարկում է hash table-ը։

2 Object clone( )

Վերադարձնում է invoking օբյեկտի կրկնօրինակը:

3 boolean contains(Object value)

Վերադարձնում է true, եթե որևէ արժեք հավասար է hash table-ում եղած արժեքներից մեկին։ Վերադարձնում է false, եթե արժեքը չի հայտնաբերվել:

4 boolean containsKey(Object key)

Վերադարձնում է true, եթե որևէ բանալի հավասար է hash table-ում գոյություն ունեցող բանալիներից մեկին։ Վերադարձնում է false, եթե բանալին չի հայտնաբերվել:

5 boolean containsValue(Object value)

Վերադարձնում է true, եթե որևէ արժեք հավասար է hash table-ում եղած արժեքներից մեկին։ Վերադարձնում է false, եթե արժեքը չի հայտնաբերվել:

6 Enumeration elements( )

Վերադարձնում է արժեքների enumeration-ը ներառված hash table-ում։

7 Object get(Object key)

Վերադարձնում է օբյեկտը,որը պարունակում է բանալի հետ կապված արժեք։ Եթե բանալին hash table չէ, ապա վերադարձվում է 0 օբյեկտ։

8 boolean isEmpty( )

Վերադարձնում է true, եթե hash table-ը դատարկ է, և false, եթե այն պարունակում է գեթ մեկ բանալի։

9 Enumeration keys( )

Վերադարձնում է բանալիների enumeration-ը ներառված hash table-ում։

10 Object put(Object key, Object value)

Ներդնում է բանալին և արժեքը hash table-ում: Վերադարձնում է 0, եթե բանալին դեռեւս hash table չէ. վերադարձնում է բանալի հետ կապված նախորդ արժեքը, եթե բանալին արդեն hash table-ում է:

11 void rehash( )

Ավելացնում է hash table-ի չափը և վերականգնում է բոլոր բանալիները։

12 Object remove(Object key)

Հեռացնում է բանալին և արժեքը: Վերադարձնում է բանալիի հետ կապված արժեքը: Եթե բանալին hash table-ում չէ վերադարձնում է 0 օբյեկտ:

13 int size( )

Վերադարձնում է hash table-ի գրառումների, մուտքերի քանակը:

14 String toString( )

Վերադարձնում է hash table-ի տողային համարժեքը:

 

Օրինակ՝

import java.util.*;

public class HashTableDemo {

 

   public static void main(String args[]) {

      // Create a hash map

      Hashtable balance = new Hashtable();

      Enumeration names;

      String str;

      double bal;

 

      balance.put(“Zara”, new Double(3434.34));

      balance.put(“Mahnaz”, new Double(123.22));

      balance.put(“Ayan”, new Double(1378.00));

      balance.put(“Daisy”, new Double(99.22));

      balance.put(“Qadir”, new Double(-19.08));

 

      // Show all balances in hash table.

      names = balance.keys();

     

      while(names.hasMoreElements()) {

         str = (String) names.nextElement();

         System.out.println(str + “: ” + balance.get(str));

      }       

      System.out.println();

     

      // Deposit 1,000 into Zara’s account

      bal = ((Double)balance.get(“Zara”)).doubleValue();

      balance.put(“Zara”, new Double(bal + 1000));

      System.out.println(“Zara’s new balance: ” + balance.get(“Zara”));

   }

}

Արդյունքը՝

Qadir: -19.08

Zara: 3434.34

Mahnaz: 123.22

Daisy: 99.22

Ayan: 1378.0 

Zara’s new balance: 4434.34