hashset线程安全吗

hashset并不是线程安全的,使用hashset需要对操作对象加锁,才能更好的保证线程安全。其实查看源代码发现HashSet内部维护数据的采用的是HashMap,根本原因是HashMap不是线程安全的类。导致了HashSet的非线程安全。

一、基本介绍

HashSet简单的理解就是HashSet对象中不能存储相同的数据,存储数据时是无序的。但是HashSet存储元素的顺序并不是按照存入时的顺序(和List显然不同) 是按照哈希值来存的所以取数据也是按照哈希值取得。存储是无序的这就和C++里的Set就不一样了C++里面的Set是有序的我认为这是在使用时候的主要区别。

二、常用方法

 boolean   add(E e)      如果当前列表中不存在e, 则将e加入列表

  void      clear()         从列表中删除所有元素

  boolean  contains(Object j)  判断列表中是否有元素j

  Iterator<E> iterator()        得到当前列表的遍历器

  boolean  remove(Object j)  如果列表中存在元素j,则将其从列表中删除

  int     size()           得到列表中元素的个数
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《hashset线程安全吗》
文章链接:https://zhuji.vsping.com/10386.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。