Java中Hashtable的学习

Hashtable源码及详细介绍:Java 集合系列11之 Hashtable详细介绍(源码解析)和使用示例

首先,可以用HashMap完全代替Hashtable的使用,Hashtable是比较老的集合了,它继承于Dictionary。较HashMap的不同在于它是线程安全的,而且它支持通过Enumeration去遍历。


Enumeration接口是Iterator迭代器的“古老版本”,从JDK 1.0开始,Enumeration接口就已经存在了(Iterator从JDK 1.2才出现)。Enumeration接口只有两个方法。

boolean hasMoreElements() 
如果此迭代器还有剩下的元素,则返回true 
Object nextElement() 
返回该迭代器的下一个元素,如果还有的话(否则抛出异常)

Enumeration迭代器只能遍历Vector、Hashtable这种古老的集合,因此通常不要使用它,除非在某些极端情况下,不得不使用Enumeration,否则都应该选择Iterator迭代器。对于ArrayList、HashMap等集合类,都不再支持使用Enumeration迭代器。

Enumeration接口介绍来自:Java集合之Enumeration


下面是Enumeration迭代器遍历HashTable代码:

// 代码实现
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;

public class hashtable {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Hashtable<String, Integer> table = new Hashtable<>();
		table.put("ab1", 10);
		table.put("ab3", 20);
		table.put("ab2", 30);
		table.put("ab4", 40);
		
		// 遍历时获取key或value最好选择下列三种之一,效率较高
		
		Iterator<?> it = table.entrySet().iterator();
		while(it.hasNext()) {
			Map.Entry<String, Integer> entry = (Map.Entry<String, Integer>)it.next();
			System.out.println(entry.getKey() + ": " + entry.getValue());
		}
		
		Enumeration<?> enu = table.keys();
		while(enu.hasMoreElements()) {
			System.out.print(enu.nextElement() + " ");
		}
		System.out.println();
		
		enu = table.elements();
		while(enu.hasMoreElements()) {
			System.out.print(enu.nextElement() + " ");
		}
		System.out.println();
	}

}


继续加油~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值