Java HashMap HashSet HashTable与其遍历接口所使用的迭代器(iterator)

set和map区别

Set代表集合元素无序,集合元素不可重复的集合,Map代表一种由多个key-value组成的集合,map集合是set集合的扩展只是名称不同

HashMap和Hashtable都实现了Map接口,主要的区别:

Hashtable是synchronized 的支持多线程使用;
HashMap非synchronized的,可以接受null。

另一个区别:
HashMap的迭代器是fail-fast迭代器,而Hashtable的enumerator迭代器。HashMap可以通过
Map m = Collections.synchronizeMap(hashMap);进行同步:

两种 iterator 区别
快速失败(fail—fast)安全失败(fail—safe)
追求性能,直接迭代,集合内容变化时抛出异常(ConcurrentModificationException )复制一份再迭代,内容变化不影响被迭代集合,不会抛出异常
  • enumerator迭代器与Iterator 的区别

Enumeration 实例

 Hashtable hashtable = new Hashtable();
	hashtable.put("1", "11");
	hashtable.put("2", "22");
	Enumeration elements = hashtable.elements();//Hashtable 支持Enumeration 迭代器
	while(elements.hasMoreElements()){
		Object nextElement = elements.nextElement();
		System.out.println(nextElement);
		/*
		通过Enumeration,我们只能读取集合的数据,而不能对数据进行修改
		*/
	}

Iterator 实例

ArrayList arrayList = new ArrayList();
arrayList.add("11");
arrayList.add("22");

ListIterator<String> listIterator = arrayList.listIterator();
while (listIterator.hasNext()) {
	System.out.println(listIterator.next());
	listIterator.remove(); 
	
	/* listIterator的remove方法是Iterator迭代器特有的
	Iterator除了能读取集合的数据之外,也能数据进行删除操作*/
	
} 

HashMap和HashSet的区别

HashSet实现了Set接口,它不允许集合中有重复的值,HashMap实现了Map接口,Map接口对键值对进行映射。HashSet扩展了HashMap,所以底层还是用到map存储,存储实现同map一致,HashMap储存键值,HashSet存储对象。

总结

Map 包括HashMap和HashTable,多线程优先选择table,他们都是K/V的组成的集合,是映射;Set 用来存储对象。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全面解读

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值