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