Interator(Collection,Map)集合

集合之间的关系如下图:

1、整个Set没有提供获取元素的方法,也没有提供修改集合元素的功能,想要获取集合中的元素,可以先把集合转换成表/数组。(注:与列表一样,不能在遍历时删除集合元素,但可以使用迭代器删

2、HashMap的底层是数据结构,即哈希表的Map接口,以键值的形式存在。

以HashSet为例,用增强for循环和Iterator遍历。

Set<String> set = new HashSet<>();
set.add("zhangsan");
set.add("lisi");
set.add("wangwu");
System.out.println("Set集合:"+set);
for(String s:set){
    System.out.println("增强for循环:"+s);
}
java.util.Iterator<String> iterator = set.iterator();
while (iterator.hasNext()){
    String str = iterator.next();
    System.out.println("Iterator遍历:"+str);
}

3、HashTable基于哈希表的Map接口实现,底层使用数组实现,数组中的每一项均是一个单链表,即数组和链表的结合体。(注:不允许使用Null值和Null键)

4、CurrentHashMap

①能够多个修改操作并发进行,关键在于使用锁分离技术。

②使用多个锁控制hash表不同段进行修改,每个小段就是一个小的hashtable,均有自己的锁。只要发生在不同的段上就可以并发进行。

③底层将key-value作为一个整体处理。

④HashMap与ConcurrentHashMap不同的是ConcurrentHashMap使用多个子Hash表,也就是段(Segment)。

⑤ConcurrentHashMap完全允许多个读操作并发进行,读操作并不需要加锁。如果使用传统的技术,如HashMap中的实现,如果允许可以在hash链的中间添加或删除元素,读操作不加锁将得到不一致的数据。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值