#Java でのハッシュ
4327 ワード
ハッシング
*ハッシュには、キーをいくつかの値にマップするハッシュ関数があります.ただし、これらのハッシュ関数は、2 つ以上のキーが同じ値にマッピングされる衝突を引き起こす可能性があります.チェーンハッシュは衝突を回避します.アイデアは、ハッシュ テーブルの各セルが、同じハッシュ関数値を持つレコードのリンク リストを指すようにすることです.
ハッシュテーブルに「N」個のバケットがあるようなハッシュ関数を作成しましょう.
ノードをハッシュ テーブルに挿入するには、指定されたキーのハッシュ インデックスを見つける必要があります.そして、ハッシュ関数を使用して計算できます.
例: hashIndex = キー % noOfBuckets
挿入: 上記で計算されたハッシュ インデックスに対応するバケットに移動し、リストの最後に新しいノードを挿入します.
削除: ハッシュ テーブルからノードを削除するには、キーのハッシュ インデックスを計算し、計算されたハッシュ インデックスに対応するバケットに移動し、現在のバケットのリストを検索して、指定されたキーを持つノードを見つけて削除します (見つかった場合). . *
Java でハッシュを実装する方法
方法-1:
HashTable (ハッシュの同期実装) の助けを借りて
import java.util.*;
クラスGFG {
public static void main(String args[])
{
// Create a HashTable to store
// String values corresponding to integer keys
Hashtable<Integer, String>
hm = new Hashtable<Integer, String>();
// Input the values
hm.put(1, "Geeks");
hm.put(12, "forGeeks");
hm.put(15, "A computer");
hm.put(3, "Portal");
// Printing the Hashtable
System.out.println(hm);
}
}
出力:
{15=コンピューター、3=ポータル、12=forGeeks、1=Geeks}
方法-2:
HashMap (ハッシュの非同期高速実装) の助けを借りて
//配列から HashMap を作成する Java プログラム
//要素をキーとして取得し、
//値としての頻度
import java.util.*;
クラスGFG {
// Function to create HashMap from array
static void createHashMap(int arr[])
{
// Creates an empty HashMap
HashMap<Integer, Integer> hmap = new HashMap<Integer, Integer>();
// Traverse through the given array
for (int i = 0; i < arr.length; i++) {
// Get if the element is present
Integer c = hmap.get(arr[i]);
// If this is first occurrence of element
// Insert the element
if (hmap.get(arr[i]) == null) {
hmap.put(arr[i], 1);
}
// If elements already exists in hash map
// Increment the count of element by 1
else {
hmap.put(arr[i], ++c);
}
}
// Print HashMap
System.out.println(hmap);
}
// Driver method to test above method
public static void main(String[] args)
{
int arr[] = { 10, 34, 5, 10, 3, 5, 10 };
createHashMap(arr);
}
}
出力:
{34=1, 3=1, 5=2, 10=3}
方法-3:
With the help of LinkedHashMap (Similar to HashMap, but keeps order of elements)
//LinkedHashMap の動作を示す Java プログラム
import java.util.*;
パブリック クラス BasicLinkedHashMap
{
public static void main(文字列 a[])
{
LinkedHashMap lhm =
新しい LinkedHashMap();
lhm.put("one", "practice.geeksforgeeks.org");
lhm.put("2", "code.geeksforgeeks.org");
lhm.put("4", "quiz.geeksforgeeks.org");
// It prints the elements in same order
// as they were inserted
System.out.println(lhm);
System.out.println("Getting value for key 'one': "
+ lhm.get("one"));
System.out.println("Size of the map: " + lhm.size());
System.out.println("Is map empty? " + lhm.isEmpty());
System.out.println("Contains key 'two'? "+
lhm.containsKey("two"));
System.out.println("Contains value 'practice.geeks"
+"forgeeks.org'? "+ lhm.containsValue("practice"+
".geeksforgeeks.org"));
System.out.println("delete element 'one': " +
lhm.remove("one"));
System.out.println(lhm);
}
}
出力:
{1=practice.geeksforgeeks.org、2=code.geeksforgeeks.org、4=quiz.geeksforgeeks.org}
キー 'one' の値を取得: practice.geeksforgeeks.org
マップのサイズ: 3
マップは空ですか?間違い
キー「2」が含まれていますか?真実
値「practice.geeksforgeeks.org」が含まれていますか?真実
要素「one」を削除: practice.geeksforgeeks.org
{two=code.geeksforgeeks.org, four=quiz.geeksforgeeks.org}
Reference
この問題について(#Java でのハッシュ), 我々は、より多くの情報をここで見つけました
https://dev.to/anuroop123/hashing-in-java-53e8
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
方法-1:
HashTable (ハッシュの同期実装) の助けを借りて
import java.util.*;
クラスGFG {
public static void main(String args[])
{
// Create a HashTable to store
// String values corresponding to integer keys
Hashtable<Integer, String>
hm = new Hashtable<Integer, String>();
// Input the values
hm.put(1, "Geeks");
hm.put(12, "forGeeks");
hm.put(15, "A computer");
hm.put(3, "Portal");
// Printing the Hashtable
System.out.println(hm);
}
}
出力:
{15=コンピューター、3=ポータル、12=forGeeks、1=Geeks}
方法-2:
HashMap (ハッシュの非同期高速実装) の助けを借りて
//配列から HashMap を作成する Java プログラム
//要素をキーとして取得し、
//値としての頻度
import java.util.*;
クラスGFG {
// Function to create HashMap from array
static void createHashMap(int arr[])
{
// Creates an empty HashMap
HashMap<Integer, Integer> hmap = new HashMap<Integer, Integer>();
// Traverse through the given array
for (int i = 0; i < arr.length; i++) {
// Get if the element is present
Integer c = hmap.get(arr[i]);
// If this is first occurrence of element
// Insert the element
if (hmap.get(arr[i]) == null) {
hmap.put(arr[i], 1);
}
// If elements already exists in hash map
// Increment the count of element by 1
else {
hmap.put(arr[i], ++c);
}
}
// Print HashMap
System.out.println(hmap);
}
// Driver method to test above method
public static void main(String[] args)
{
int arr[] = { 10, 34, 5, 10, 3, 5, 10 };
createHashMap(arr);
}
}
出力:
{34=1, 3=1, 5=2, 10=3}
方法-3:
With the help of LinkedHashMap (Similar to HashMap, but keeps order of elements)
//LinkedHashMap の動作を示す Java プログラム
import java.util.*;
パブリック クラス BasicLinkedHashMap
{
public static void main(文字列 a[])
{
LinkedHashMap lhm =
新しい LinkedHashMap();
lhm.put("one", "practice.geeksforgeeks.org");
lhm.put("2", "code.geeksforgeeks.org");
lhm.put("4", "quiz.geeksforgeeks.org");
// It prints the elements in same order
// as they were inserted
System.out.println(lhm);
System.out.println("Getting value for key 'one': "
+ lhm.get("one"));
System.out.println("Size of the map: " + lhm.size());
System.out.println("Is map empty? " + lhm.isEmpty());
System.out.println("Contains key 'two'? "+
lhm.containsKey("two"));
System.out.println("Contains value 'practice.geeks"
+"forgeeks.org'? "+ lhm.containsValue("practice"+
".geeksforgeeks.org"));
System.out.println("delete element 'one': " +
lhm.remove("one"));
System.out.println(lhm);
}
}
出力:
{1=practice.geeksforgeeks.org、2=code.geeksforgeeks.org、4=quiz.geeksforgeeks.org}
キー 'one' の値を取得: practice.geeksforgeeks.org
マップのサイズ: 3
マップは空ですか?間違い
キー「2」が含まれていますか?真実
値「practice.geeksforgeeks.org」が含まれていますか?真実
要素「one」を削除: practice.geeksforgeeks.org
{two=code.geeksforgeeks.org, four=quiz.geeksforgeeks.org}
Reference
この問題について(#Java でのハッシュ), 我々は、より多くの情報をここで見つけました https://dev.to/anuroop123/hashing-in-java-53e8テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol