Java教程

Java Hashtable

Java哈希表类实现了一个哈希表,该哈希表将键映射到值。它继承了Dictionary类并实现Map接口。

要记住的要点

哈希表是列表的数组。每个列表称为存储桶。桶的位置通过调用hashcode()方法来标识。哈希表包含基于键的值。 Java Hashtable类包含唯一的元素。 Java Hashtable类不允许空键或空值。 Java Hashtable类已同步。 Hashtable类的初始默认容量为11,而loadFactor为0.75。

哈希表类声明

让我们看看java.util.Hashtable类的声明。
public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, Serializable

哈希表类参数

让我们看一下java.util.Hashtable类的参数。
K : 这是此Map维护的键的类型。 V : 这是映射值的类型。

Java Hashtable类的构造函数

构造函数 说明
Hashtable() 它将创建一个具有初始默认容量和负载因子的空哈希表。
Hashtable(int capacity) 它接受一个整数参数并创建一个包含指定初始容量的哈希表。
Hashtable(int capacity, float loadFactor) 它用于创建具有指定初始容量和loadFactor的哈希表。
Hashtable(Map t) 它将创建一个具有与给定Map相同映射关系的新哈希表。

Java Hashtable类的方法

方法 说明
void clear() 它用于重置哈希表。
Object clone() 它返回哈希表的浅表副本。
V compute(K key, BiFunction remappingFunction) 它用于计算指定键及其当前映射值的映射(如果没有当前映射,则为null)。
V computeIfAbsent(K key, Function mappingFunction) 如果指定的键尚未与值关联(或已映射为null),则使用给定的映射函数计算其值,除非为null,否则将其输入到此映射中。
V computeIfPresent(K key, BiFunction remappingFunction) 如果指定键的值存在且不为空,则用于给定键及其当前映射值的情况下计算新映射。
Enumeration elements() 它返回哈希表中值的枚举。
Set > entrySet() 它返回Map中包含的映射的设置视图。
boolean equals(Object o) 用于将指定对象与Map进行比较。
void forEach(BiConsumer action) 它将对映射中的每个条目执行给定的操作,直到处理完所有条目或该操作引发异常为止。
V getOrDefault(Object key, V defaultValue) 它返回指定键所映射到的值,如果映射不包含该键的映射,则返回defaultValue。
int hashCode() 它返回Map的哈希码值
Enumeration <K> keys() 它返回哈希表中键的枚举。
Set <K> keySet() 它返回Map中包含的键的Set视图。
V merge(K key, V value, BiFunction remappingFunction) 如果指定的键尚未与某个值关联或与null关联,请将其与给定的非null值关联。
V put(K key, V value) 它将在哈希表中插入具有指定键的指定值。
void putAll(Map t)) 用于将所有键值对从map复制到哈希表。
V putIfAbsent(K key, V value) 如果指定的键尚未与值关联(或映射为null),则将其与给定的值关联并返回null,否则返回当前值。
boolean remove(Object key, Object value) 它从哈希表中删除具有关联的指定键的指定值。
V replace(K key, V value) 它将指定值替换为指定键。
boolean replace(K key, V oldValue, V newValue) 它将旧值替换为指定键的新值。
void replaceAll(BiFunction function) 它将所有条目的值替换为对该条目调用给定函数的结果,直到处理完所有条目或该函数引发异常为止。
String toString() 它返回Hashtable对象的字符串表示形式。
Collection values() 它返回Map中包含的值的集合视图。
boolean contains(Object value) 如果哈希表中存在等于该值的值,则此方法返回true,否则返回false。
boolean containsValue(Object value) 如果哈希表中存在等于该值的值,则此方法返回true,否则返回false。
boolean containsKey(Object key) 如果哈希表中存在与该键相同的键,则此方法返回true,否则返回false。
boolean isEmpty() 如果哈希表为空,则此方法返回true;否则,此方法返回true。如果包含至少一个密钥,则返回false。
protected void rehash() 它用于增加哈希表的大小并重新哈希其所有键。
V get(Object key) 此方法返回包含与键关联的值的对象。
V remove(Object key) 用于删除密钥及其值。此方法返回与键关联的值。
int size() 此方法返回哈希表中的条目数。

Java哈希表示例

import java.util.*;
class Hashtable1{
    public static void main(String args[]){
        Hashtable<Integer,String> hm=new Hashtable<Integer,String>();
        hm.put(100,"Amit");
        hm.put(102,"Ravi");
        hm.put(101,"Vijay");
        hm.put(103,"Rahul");
        for(Map.Entry m:hm.entrySet()){
            System.out.println(m.getKey()+" "+m.getValue());
        }
    }
}
输出:
103 Rahul
102 Ravi
101 Vijay
100 Amit

Java哈希表示例: remove()

import java.util.*;
public class Hashtable2 {
    public static void main(String args[]) {
        Hashtable<Integer,String> map=new Hashtable<Integer,String>();
        map.put(100,"Amit");
        map.put(102,"Ravi");
        map.put(101,"Vijay");
        map.put(103,"Rahul");
        System.out.println("Before remove: "+ map);
        map.remove(102);
        System.out.println("After remove: "+ map);
    }
}
输出:
Before remove: {103=Rahul, 102=Ravi, 101=Vijay, 100=Amit}
After remove: {103=Rahul, 101=Vijay, 100=Amit}

Java哈希表示例: getOrDefault()

import java.util.*;
class Hashtable3{
    public static void main(String args[]){
        Hashtable<Integer,String> map=new Hashtable<Integer,String>();
        map.put(100,"Amit");
        map.put(102,"Ravi");
        map.put(101,"Vijay");
        map.put(103,"Rahul");
        System.out.println(map.getOrDefault(101, "Not Found"));
        System.out.println(map.getOrDefault(105, "Not Found"));
    }
}
输出:
Vijay
Not Found

Java哈希表示例: putIfAbsent()

import java.util.*;
class Hashtable4{
    public static void main(String args[]){
        Hashtable<Integer,String> map=new Hashtable<Integer,String>();
        map.put(100,"Amit");
        map.put(102,"Ravi");
        map.put(101,"Vijay");
        map.put(103,"Rahul");
        System.out.println("Initial Map: "+map);
        map.putIfAbsent(104,"Gaurav");
        System.out.println("Updated Map: "+map);
        map.putIfAbsent(101,"Vijay");
        System.out.println("Updated Map: "+map);
    }
}
输出:
Initial Map: {103=Rahul, 102=Ravi, 101=Vijay, 100=Amit}
Updated Map: {104=Gaurav, 103=Rahul, 102=Ravi, 101=Vijay, 100=Amit}
Updated Map: {104=Gaurav, 103=Rahul, 102=Ravi, 101=Vijay, 100=Amit}

Java哈希表示例: 书

import java.util.*;
class Book {
    int id;
    String name,author,publisher;
    int quantity;
    public Book(int id, String name, String author, String publisher, int quantity) {
        this.id = id;
        this.name = name;
        this.author = author;
        this.publisher = publisher;
        this.quantity = quantity;
    }
}
public class HashtableExample {
    public static void main(String[] args) {
        Map<Integer,Book> map=new Hashtable<Integer,Book>();
        Book b1=new Book(101,"Let us C","Yashwant Kanetkar","BPB",8);
        Book b2=new Book(102,"Data Communications & Networking","Forouzan","Mc Graw Hill",4);
        Book b3=new Book(103,"Operating System","Galvin","Wiley",6);
        map.put(1,b1);
        map.put(2,b2);
        map.put(3,b3);
        for(Map.Entry<Integer, Book> entry:map.entrySet()){
            int key=entry.getKey();
            Book b=entry.getValue();
            System.out.println(key+" Details:");
            System.out.println(b.id+" "+b.name+" "+b.author+" "+b.publisher+" "+b.quantity);
        }
    }
}
输出:
3 Details:
103 Operating System Galvin Wiley 6
2 Details:
102 Data Communications & Networking Forouzan Mc Graw Hill 4
1 Details:
101 Let us C Yashwant Kanetkar BPB 8
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4