类 HASHSET<E>
所有已实现的接口:Serializable, Cloneable, Iterable<E>, Collection<E>, Set<E>
此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。
此类为基本操作提供了稳定性能,这些基本操作包括
add、remove、contains 和 size,假定哈希函数将这些元素正确地分布在桶中。对此 set 进行迭代所需的时间与 HashSet
实例的大小(元素的数量)和底层 HashMap
实例(桶的数量)的“容量”的和成比例。因此,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。
注意,此实现不是同步的。如果多个线程同时访问一个哈希
set,而其中至少一个线程修改了该 set,那么它必须 保持外部同步。这通常是通过对自然封装该 set
的对象执行同步操作来完成的。如果不存在这样的对象,则应该使用 Collections.synchronizedSet 方法来“包装”
set。最好在创建时完成这一操作,以防止对该 set 进行意外的不同步访问:
Set s = Collections.synchronizedSet(new HashSet(...));
类 HASHMAP<K,V>
所有已实现的接口:Serializable, Cloneable, Map<K,V>
基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
类 CONCURRENTHASHMAP<K,V>
所有已实现的接口:
Serializable, ConcurrentMap<K,V>, Map<K,V>
支持获取的完全并发和更新的所期望可调整并发的哈希表。此类遵守与
Hashtable 相同的功能规范,并且包括对应于 Hashtable 的每个方法的方法版本。不过,尽管所有操作都是线程安全的,但获取操作不
必锁定,并且不 支持以某种防止所有访问的方式锁定整个表。此类可以通过程序完全与 Hashtable
进行互操作,这取决于其线程安全,而与其同步细节无关。
此类与 Hashtable 相似,但与 HashMap 不同,它不 允许将 null 用作键或值。
分享到:
相关推荐
比较Java原生的 3种Map的效率。 1. TreeMap 2. HashMap 3. ConcurrentSkipListMap 本测试查找方法使用Map的get方法,循环、离散获取。... SkipListMap的范围查询效率比HashMap和TreeMap效率都要高。
lmn-concurrent-hashmap 用于并行模型检查的高性能并发哈希映射的 C/C++ 库 要求 autoconf 2.69 automake 1.11.3 gcc 4.6.3 g++ 4.6.3 如何构建 $ autoreconf -i $ ./configure $ make 内容 细粒度锁 ChainHash ...
众所周知HashMap底层是基于数组+链表组成的,不过在jdk1.7和1.8中具体实现稍有不同。1.7中的数据结构图:先来看看1.7中的实现。这是HashMap中比较核心的几个成员变量;看看分别是什么意思?初始化桶大小,因为底层是...
本文详述Java语言中的hashmap与concurrenthashmap,使用其他语言的朋友可做参考 首先我们先来看一下这几个类原码开头的部分 public class HashMap extends AbstractMap ...public interface ConcurrentMap extends Map
ConcurrentHashMap继承了AbstractMap,实现了ConcurrentMap,Serializable接口,ConcurrentMap又实现了Map接口。ConcurrentHashMap是基于散列表实现的,存储的是Key/Value对,底层使用数组+链表+红黑树+CAS算法实现...
阿里面试题:ConcurrentHashMap为什么是线程安全的? ConcurrentHashMap,其实是线程安全的...jdk1.7 ConcurrentHashMap是由一个Segment数组和多个HashEntry数组组成 其实就是将HashMap分为多个小HashMap,每个Segme
本文分析Doug Lea的util.concurrent包中的ConcurrentHashMap的实现。并针对吞吐量进行优化,对于大多数一般用法来说它是经过优化的,这些用法往往会检索一个很可能在map中已经存在的值。ConcurrentHashMap摒弃了单一...
private static ConcurrentMap, ConcurrentMap, Object>> handlerMap = new ConcurrentHashMap, ConcurrentMap, Object>>(20); private static int checkContentType(String path) { String type = path....
dashmap:为Rust快速燃烧并发HashMap
jdk1.7 到 jdk1.8 Map 发生了什么变化(底层)? 1.8 之后 hashMap 的数据结构发生了变化,从之前的单纯的数组+链表结构变成数组+链 表+红黑树。也就是说在 JVM 存储 hashMap 的 K-V 时仅仅通过 key 来决定每一个 entry...
在此方法出现在HashMap里面之前,JDK给出的解决方案是ConcurrentMap的putIfAbsent()方法。 出现在HashMap里面的这个putIfAbsent()方法与之前的解决方法具有相同的功能, 4.2 特点 1.当value为null的时候,put
66、HashMap和Hashtable的区别 17 67、说出ArrayList,Vector, LinkedList的存储性能和特性 17 68、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? 17 69、文件读写的...
简述synchronized和java.util.concurrent.locks.Lock的异同 ? 34.EJB规范规定EJB中禁止的操作有哪些? 35.java除了8种基本类型外,在虚拟机里还有哪一种,有什么作用? 36.除了使用new关键字创建对象意外,试列举...
java7 hashmap源码 to-be-architect to be a Java ...Map:ConcurrentHashMap、HashMap、HashTable 并发List Set:CopyOnWriteArrayList、CopyOnWriteArraySet、 ArrayList、 LinkedList Concurrent
和 1.7 大体上都差不多,还是有几个重要的区别: TREEIFY_THRESHOLD 用于判断是否需要将链表转换为红黑树的阈值。 HashEntry 修改为 Node。 Node 的核心组成其实也是和 1.7 中的 HashEntry 一样,存放的都是 key ...
66、HashMap和Hashtable的区别 17 67、说出ArrayList,Vector, LinkedList的存储性能和特性 17 68、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? 17 69、文件读写的...
看你简历里写了 HashMap,那你说说它存在什么缺点? 线程不安全 迭代时无法修改值 那你有用过线程安全的 Map 吗? 有,回答在哪用过。 没有,不过我了解过。 那你说说它们的实现。 Hashtable Hashtable 本身比较低效...
60、HashMap和Hashtable的区别 61、List 和 Map 区别? 62、List, Set, Map是否继承自Collection接口? 63、List、Map、Set三个接口,存取元素时,各有什么特点? 64、说出ArrayList,Vector, LinkedList的存储性能...
9. HashMap和Hashtable的区别。 8 10. final, finally, finalize的区别。 8 11. sleep() 和 wait() 有什么区别? 8 12. Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 8 13. error和...
有Guava Cache: 缓存和ConcurrentMap是非常相像的,但是它们也不完全一样。最根本的区别就是,Con currentMap会持有所有添加的对象,直到被显示的移除。而缓存为了限制其内存的使用 ,通常都会配置成可以自动的将...