首页 新闻 会员 周边 捐助

为什么Java不用Synchronized+HashMap实现线程安全的Set?

0
悬赏园豆:30 [待解决问题]

Set一般都是用来查询、去重作用的,知道的关于线程安全的Set集合只有CopyOnWritrArraySet。但CopyOnWritrArraySet底层用CopyOnWritrArrayList实现,每次查询重复都需要对List进行for循环,依次遍历。感觉效率不行呀,为什么不用HashMap呢?哈希查询很快呀。
如果是因为HashMap内部扩容、链表转红黑树等效率低下,这个理由也不够呀。链表转红黑树的概率(链表长度达到8)是亿分之六,这概率也太低了。 而且CopyOnWritrArrayList也需要扩容、复制等。
求大佬给个解答。

real_zhui的主页 real_zhui | 初学一级 | 园豆:95
提问于:2020-06-24 17:19
< >
分享
所有回答(2)
0

Collections.synchronizedSet(new HashSet<>());不是也能给一个安全的set吗,或者Collections.newSetFromMap(map),传一个ConcurrentHashMap进去就是了

yytxdy | 园豆:1680 (小虾三级) | 2020-06-24 17:34

对哦,忘了这个了。。

支持(0) 反对(0) real_zhui | 园豆:95 (初学一级) | 2020-06-25 10:46
0

可能是觉得没必要吧

real_zhui | 园豆:95 (初学一级) | 2020-08-17 17:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册