Java字典类
Java字典是一个抽象类。
它是任何键值映射对象(例如Hashtable)的父类。
但是,不赞成使用Java 1.2中引入的Map接口,该接口后来简化了Collections Framework。
字典不允许键和值的null。
注意:字典类已过时,您不应使用它。
我在Python中经常使用字典,并且对Java中是否有Dictionary类感到好奇?这就是我对Dictionary类的了解。
如果您感到好奇,这里提供的信息只是对它有所了解,请尝试避免在应用程序中使用它。
Java字典方法
此类声明实现类必须实现的7个方法。
int size():返回字典的大小。
boolean isEmpty():如果没有键值映射,则返回true,否则返回false。
Enumeration <K> keys():返回字典中键的枚举。
Enumeration <K> elements():返回字典中值的枚举。
V get(Object key):返回与键关联的值,如果键不存在,则返回null。
V put(K键,V值):将键值对添加到字典中。
如果任何键值均为null,则抛出NullPointerException。
如果键已经存在,则返回关联的值,然后更新新值。
如果是新密钥,则返回null。V remove(Object key):从字典中删除键/值对。
返回与键关联的值。
如果字典中不存在该键,则不执行任何操作,并返回null。
词典实现类
Dictionary的唯一直接实现是Hashtable类。
Properties类扩展了Hashtable,因此它也是Dictionary的实现。
Java字典初始化
Dictionary<String, Integer> dict = new Hashtable<>();
字典支持泛型,因此我们可以在声明和实例化Dictionary对象时指定键值类型。
带值的字典初始化
Hashtable类具有一个构造函数,该构造函数接受Map并将其密钥对复制到Hashtable对象。
我们可以使用它来初始化带有值的字典。
Map<String, String> tempMap = new HashMap<>(); tempMap.put("1", "One"); Dictionary<String, String> dict1 = new Hashtable<>(tempMap); System.out.println(dict1); //prints {1=One}
Java字典与地图
字典是一个抽象类,而地图是一个接口。
在精简Collection类和在JDK 1.2中引入Map后,不推荐使用Dictionary类。
不要在您的应用程序中使用字典,最好使用地图。
Java字典vs哈希表
Dictionary是一个抽象类,其中Hashtable是Dictionary的实现。
不推荐使用字典类,而仍在使用Hashtable。
实际上,Hashtable是Collections框架的一部分,并实现Map接口。
如何检查字典中是否存在键
这是一个简单的程序,其中我们遍历键的枚举,以检查键是否存在于字典中。
Dictionary<String, String> dict = new Hashtable<>(); dict.put("1", "One"); dict.put("2", "Two"); dict.put("3", "Three"); Enumeration<String> keys = dict.keys(); boolean found = false; String lookupKey = "2"; while (keys.hasMoreElements()) { String key = keys.nextElement(); if (lookupKey.contentEquals(key)) { found = true; System.out.println(lookupKey + " is present in the dictionary."); break; } } if (!found) System.out.println(lookupKey + " is not present in the dictionary.");
我们还可以使用get()方法检查密钥是否存在。
如果密钥不存在,则返回null。
另外,不允许使用null值,因此可以使用null检查。
String value = dict.get(lookupKey); if(value != null) System.out.println(lookupKey + " is present in the dictionary."); else System.out.println(lookupKey + " is not present in the dictionary.");