HashTable
HashTable API
Modifier and Type | Method and Description |
---|---|
void | clear() 清除此HashTable中的所有元素。 |
Object | clone() 创建此HashTable的浅拷贝。 |
V | compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) 根据key和函数表达式设置新的value,并返回新的value.当新的value为null时,删除对应的key。 |
V | computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction) 根据key和函数表达式设置新的value,并返回新的value.当新的value为null时,不进行任何操作 。 |
V | computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) key存在且相关联的 value不为 null时,函数根据 key对应的value计算出newValue,使用newValue替换旧值。 |
boolean | contains(Object value) 判断是否包含指定元素。 |
boolean | containsValue(Object value) 判断是否包含指定key。 |
boolean | containsKey(Object key) 判断是否包含指定value。 |
Enumeration | elements() 返回HashTable中value的枚举。 |
Set<Map.Entry<K,V>> | entrySet() 返回HashTable中所有元素。 |
boolean | equals(Object o) 根据Map界面中的定义,将指定的对象与此Map进行比较以相等。 |
void | forEach(BiConsumer<? super K,? super V> action) 对此映射中的每个条目执行给定的操作,直到所有条目都被处理或操作引发异常。 |
V | get(Object key) 返回到指定键所映射的值,或 null如果此映射包含该键的映射。 |
V | getOrDefault(Object key, V defaultValue) 返回到指定键所映射的值,或 defaultValue如果此映射包含该键的映射。 |
int | hashCode() 按照Map界面中的定义返回此Map的哈希码值。 |
boolean | isEmpty() 测试这个哈希表是否将值映射到值。 |
Enumeration | keys() 返回此散列表中键的枚举。 |
Set | keySet()返回此地图中包含的key的Set视图。 |
V | merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction) 如果指定的键尚未与值相关联或与null相关联,则将其与给定的非空值相关联。 |
V | put(K key, V value) 将指定的 key映射到此 key value中指定的value。 |
void | putAll(Map<? extends K,? extends V> t) 将所有从指定地图的映射复制到此散列表。 |
V | putIfAbsent(K key, V value) 如果指定的键尚未与值相关联(或映射到 null )将其与给定值相关联并返回 null ,否则返回当前值。 |
protected void | rehash() 增加这个散列表的内部重组能力,从而更有效地适应和访问其条目。 |
V | remove(Object key) 从此散列表中删除键(及其对应的值)。 |
boolean | remove(Object key, Object value) 仅当指定的密钥当前映射到指定的值时删除该条目。 |
V | replace(K key, V value) 只有当目标映射到某个值时,才能替换指定键的条目。 |
boolean | replace(K key, V oldValue, V newValue) 仅当当前映射到指定的值时,才能替换指定键的条目。 |
void | replaceAll(BiFunction<? super K,? super V,? extends V> function) 将每个条目的值替换为对该条目调用给定函数的结果,直到所有条目都被处理或该函数抛出异常。 |
int | size() 返回此哈希表中的键数。 |
String | toString() 以一组条目的形式返回此 Hashtable对象的字符串表示形式,其括在大括号中,并以ASCII字符“ , ”(逗号和空格)分隔。 |
Sample Code
import java.util.Hashtable;
import java.util.Map;
public class HashTableDemo {
private static Hashtable<String, String> hashTable = new Hashtable<String, String>();
static {
hashTable.put("A", "a");
hashTable.put("B", "b");
hashTable.put("C", "c");
hashTable.put("D", "d");
hashTable.put("E", "e");
}
public static void main(String[] args) {
merge();
}
/**
* @Function: compute
* @Description: 根据key和函数表达式设置新的value,并返回新的value.当新的value为null时,删除对应的key
* @param hashTable
* @param key
*/
public static void compute() {
String newValue = hashTable.compute("A", (key, value) -> "newValue=A");
// newValue=A
System.out.println(newValue);
// key不存在时新增
hashTable.compute("F", (key, value) -> "new F");
// E的value为null,所以删除元素
hashTable.compute("E", (key, value) -> null);
/*
* B:b
* C:c
* D:d
* F:new F
* A:newValue=A
*/
hashTable.forEach(
(key,value) -> {
System.out.println(key +":"+ value);
}
);
}
/**
* @Function: computeIfAbsent
* @Description: 根据key和函数表达式设置新的value,并返回新的value.当新的value为null时,不进行任何操作
*
* @param hashTable
*/
public static void computeIfAbsent() {
String newValue = hashTable.computeIfAbsent("F", key -> "f");
// f
System.out.println(newValue);
// key存在,不进行操作
hashTable.computeIfAbsent("A", key -> "new a");
// value为null,不进行操作
hashTable.computeIfAbsent("G", key -> null);
/*
* B:b
* C:c
* D:d
* E:e
* F:f
* A:a
*/
hashTable.forEach(
(key,value) -> {
System.out.println(key +":"+ value);
}
);
}
/**
* @Function: computeIfPresent
* @Description: key存在且相关联的 value不为 null时,函数根据 key对应的value计算出newValue,使用newValue替换旧值.
*
* @param hashTable
*/
public static void computeIfPresent() {
String newValue = hashTable.computeIfPresent(
"A", (key, value) -> "new" + value
);
// newa
System.out.println(newValue);
// 不进行操作
hashTable.computeIfPresent("F",(key, value) -> null);
// 不进行操作
hashTable.computeIfPresent("F",(key, value) -> "new F");
/*
* B:b
* C:c
* D:d
* E:e
* A:newa
*/
hashTable.forEach(
(key,value) -> {
System.out.println(key +":"+ value);
}
);
}
/**
* @Function: entrySet
* @Description: 遍历hashTable中的所有元素
*
* @param hashTable
*/
public static void entrySet() {
for(Map.Entry<String, String> map : hashTable.entrySet()) {
System.out.println(map.getKey() +":"+ map.getValue());
}
}
/**
* @Function: forEach
* @Description: 遍历hashTable
*
* @param hashTable
*/
public static void forEach() {
hashTable.forEach(
(key,value) -> {
System.out.println(key + ":" + value);
}
);
}
/**
* @Function: keySet
* @Description: 遍历返回hashTable的所有key
*
* @param hashTable
*/
public static void keySet() {
for(String key : hashTable.keySet()) {
System.out.println(key);
}
}
/**
* @Function: merge
* @Description: 根据key获得value并和新的参数value合并
* oldVal 为根据key获取的value , newValue 为 newVal , put(key,oldVal + newVal)
*
* @param hashMap
* @param key 需要操作的map的key
* @param newValue 需要合并的值
*/
public static void merge() {
String newValue = hashTable.merge("A", "新增拼接字符串", (oldVal, newVal) -> oldVal + newVal);
// a新增拼接字符串
System.out.println(newValue);
// value为null时删除键值对
hashTable.merge("A", "新增拼接字符串", (oldVal, newVal) -> null);
// 不存在时新增
hashTable.merge("F", "新增拼接字符串", (oldVal, newVal) -> oldVal + newVal);
/*
* B:b
* C:c
* D:d
* E:e
* F:新增拼接字符串
*/
hashTable.forEach(
(key,value) -> {
System.out.println(key +":"+ value);
}
);
}
/**
* @Function: replaceAll
* @Description: 根据函数对所有元素进行替换
*
* @param hashTable
*/
public static void replaceAll() {
hashTable.replaceAll(
(key,value) -> {
if("A".equals(key)) {
return "a";
}else {
return "b";
}
}
);
/*
* B:b
* C:b
* D:b
* E:b
* A:a
*/
hashTable.forEach(
(key,value) -> {
System.out.println(key + ":" + value);
}
);
}
/**
* @Function: values
* @Description: 遍历HashTable中所有元素的value
*
* @param hashTable
*/
public void values(Map<String, String> hashTable) {
for(String value : hashTable.values()) {
System.out.println(value);
}
}
}