博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
類別 ConcurrentHashMap<K,V>的更新,删除
阅读量:4079 次
发布时间:2019-05-25

本文共 7927 字,大约阅读时间需要 26 分钟。

 


JavaTM 2 Platform
Standard Ed. 6


java.util.concurrent
類別 ConcurrentHashMap<K,V>

java.util.concurrent.ConcurrentHashMap
型別參數:
K - 此映射維護的鍵的型別
V - 映射值的類別
所有已實作的介面:
, <K,V>, <K,V>

public class ConcurrentHashMap
extends <K,V>implements <K,V>,
 

支持獲取的完全共時和更新的所期望可調整共時的雜湊表。此類別遵守與 相同的功能規範,並且包括對應於 Hashtable 的每個方法的方法版本。不過,儘管所有操作都是執行緒安全的,但獲取操作 必鎖定,並且 支持以某種防止所有存取的方式鎖定整個表。此類別可以通過程序完全與 Hashtable 進行互操作,這取決於其執行緒安全,而與其同步細節無關。

獲取操作(包括 get)通常不會受阻塞,因此,可能與更新操作交迭(包括 putremove)。獲取會影響最近完成的 更新操作的結果。對於一些聚合操作,比如 putAllclear,共時獲取可能只影響某些條目的插入和移除。類似地,在創建迭代器/列舉時或自此之後,Iterators 和 Enumerations 返回在某一時間點上影響雜湊表狀態的元素。它們不會 拋出 。不過,迭代器被設計成每次僅由一個執行緒使用。

這允許通過可選的 concurrencyLevel 建構子參數(預設值為 16)來引導更新操作之間的共時,該參數用作內部調整大小的一個提示。表是在內部進行分區的,試圖允許指示無爭用共時更新的數量。因為雜湊表中的位置基本上是隨意的,所以實際的共時將各不相同。理想情況下,應該選擇一個盡可能多地容納共時修改該表的執行緒的值。使用一個比所需要的值高很多的值可能會浪費空間和時間,而使用一個顯然低很多的值可能導致執行緒爭用。對數量級估計過高或估計過低通常都會帶來非常顯著的影響。當僅有一個執行緒將執行修改操作,而其他所有執行緒都只是執行讀取操作時,才認為某個值是合適的。此外,重新調整此類別或其他任何種類別雜湊表的大小都是一個相對較慢的操作,因此,在可能的時候,提供建構子中期望表大小的估計值是一個好主意。

此類別及其視圖和迭代器實作了 和 介面的所有可選 方法。

此類別與 相似,但與 不同,它 允許將 null 用作鍵或值。

此類別是 的成員。

 

 

從以下版本開始:
1.5
另請參見:

巢狀類別摘要
從類別 java.util. 繼承的巢狀類別/介面
<,>, <,>
從介面 java.util. 繼承的巢狀類別/介面
<,>
建構子摘要
()
          創建一個帶有預設初始容量 (16)、載入因子 (0.75) 和 concurrencyLevel (16) 的新的空映射。
(int initialCapacity)
          創建一個帶有指定初始容量、預設載入因子 (0.75) 和 concurrencyLevel (16) 的新的空映射。
(int initialCapacity, float loadFactor)
          創建一個帶有指定初始容量、載入因子和預設 concurrencyLevel (16) 的新的空映射。
(int initialCapacity, float loadFactor, int concurrencyLevel)
          創建一個帶有指定初始容量、載入因子和共時級別的新的空映射。
(<? extends ,? extends > m)
          建構一個與給定映射具有相同映射關係的新映射。
方法摘要
 void ()
          從該映射中移除所有映射關係
 boolean ( value)
          一種遺留方法,測試此表中是否有一些與指定值存在映射關係的鍵。
 boolean ( key)
          測試指定物件是否為此表中的鍵。
 boolean ( value)
          如果此映射將一個或多個鍵映射到指定值,則返回 true
 <> ()
          返回此表中值的列舉。
 <<,>> ()
          返回此映射所包含的映射關係的 視圖。
  ( key)
          返回指定鍵所映射到的值,如果此映射不包含該鍵的映射關係,則返回 null
 boolean ()
          如果此映射不包含鍵-值映射關係,則返回 true
 <> ()
          返回此表中鍵的列舉。
 <> ()
          返回此映射中包含的鍵的 視圖。
  ( key,  value)
          將指定鍵映射到此表中的指定值。
 void (<? extends ,? extends > m)
          將指定映射中所有映射關係複製到此映射中。
  ( key,  value)
          如果指定鍵已經不再與某個值相關聯,則將它與給定值關聯。
  ( key)
          從此映射中移除鍵(及其相應的值)。
 boolean ( key,  value)
          只有目前將鍵的條目映射到給定值時,才移除該鍵的條目。
  ( key,  value)
          只有目前將鍵的條目映射到某一值時,才替換該鍵的條目。
 boolean ( key,  oldValue,  newValue)
          只有目前將鍵的條目映射到給定值時,才替換該鍵的條目。
 int ()
          返回此映射中的鍵-值映射關係數。
 <> ()
          返回此映射中包含的值的 視圖。
從類別 java.util. 繼承的方法
, , ,
從類別 java.lang. 繼承的方法
, , , , , ,
從介面 java.util. 繼承的方法
,
建構子詳細資訊

 

ConcurrentHashMap

public ConcurrentHashMap(int initialCapacity,                         float loadFactor,                         int concurrencyLevel)
創建一個帶有指定初始容量、載入因子和共時級別的新的空映射。

 

參數:
initialCapacity - 初始容量。該實作執行內部大小調整,以容納這些元素。
loadFactor - 載入因子閾值,用來控制重新調整大小。在每 bin 中的平均元素數大於此閾值時,可能要重新調整大小。
concurrencyLevel - 當前更新執行緒的估計數。該實作將執行內部大小調整,以盡量容納這些執行緒。
拋出:
- 如果初始容量為負,或者載入因子或 concurrencyLevel 為非正。

 


ConcurrentHashMap

public ConcurrentHashMap(int initialCapacity,                         float loadFactor)
創建一個帶有指定初始容量、載入因子和預設 concurrencyLevel (16) 的新的空映射。

 

參數:
initialCapacity - 該實作執行內部的大小調整,以容納這些元素。
loadFactor - 載入因子閾值,用來控制重新調整大小。在每 bin 中的平均元素數大於此閾值時,可能要重新調整大小。
拋出:
- 如果元素的初始容量為負,或者載入因子為非正
從以下版本開始:
1.6

 


ConcurrentHashMap

public ConcurrentHashMap(int initialCapacity)
創建一個帶有指定初始容量、預設載入因子 (0.75) 和 concurrencyLevel (16) 的新的空映射。

 

參數:
initialCapacity - 初始容量。該實作執行內部的大小調整,以容納這些元素。
拋出:
- 如果元素的初始容量為負。

 


ConcurrentHashMap

public ConcurrentHashMap()
創建一個帶有預設初始容量 (16)、載入因子 (0.75) 和 concurrencyLevel (16) 的新的空映射。

 


ConcurrentHashMap

public ConcurrentHashMap(
 m)
建構一個與給定映射具有相同映射關係的新映射。使用給定映射中映射關係數 1.5 倍的容量或 16(選更大的那一個)、預設載入因子 (0.75) 和 concurrencyLevel (16) 來創建該映射。

 

參數:
m - 映射

 

 

方法詳細資訊

 

isEmpty

public boolean isEmpty()
如果此映射不包含鍵-值映射關係,則返回
true

 

指定者:
介面
<,> 中的
覆寫:
類別
<,> 中的
返回:
如果此映射不包含鍵-值映射關係,則返回
true

size

public int size()
返回此映射中的鍵-值映射關係數。如果該映射包含的元素多於
Integer.MAX_VALUE,則返回
Integer.MAX_VALUE

 

指定者:
介面
<,> 中的
覆寫:
類別
<,> 中的
返回:
此映射中的鍵-值映射關係數

get

public  get( key)
返回指定鍵所映射到的值,如果此映射不包含該鍵的映射關係,則返回
null

更確切地講,如果此映射包含滿足從鍵 k 到值 v 的映射關係 key.equals(k),則此方法返回 v;否則它返回 null。(最多只能有一個這樣的映射關係)。

 

 

指定者:
介面
<,> 中的
覆寫:
類別
<,> 中的
參數:
key - 要返回其關聯值的鍵
返回:
指定鍵所映射的值;如果此映射不包含該鍵的映射關係,則返回
null
拋出:
- 如果指定鍵為 null

containsKey

public boolean containsKey( key)
測試指定物件是否為此表中的鍵。

 

指定者:
介面
<,> 中的
覆寫:
類別
<,> 中的
參數:
key - 可能的鍵
返回:
當且僅當指定物件(由
equals 方法確定)是此表中的鍵時,返回
true;否則返回
false
拋出:
- 如果指定鍵為 null

containsValue

public boolean containsValue( value)
如果此映射將一個或多個鍵映射到指定值,則返回
true。註:此方法需要完全內部遍歷雜湊表,因此它比方法
containsKey 更慢。

 

指定者:
介面
<,> 中的
覆寫:
類別
<,> 中的
參數:
value - 測試在此映射中是否存在的值
返回:
如果此映射將一個或多個鍵映射到指定值,則返回
true
拋出:
- 如果指定值為 null

contains

public boolean contains( value)
一種遺留方法,測試此表中是否有一些與指定值存在映射關係的鍵。此方法在功能上等同於 ,並且它的存在只是為了確保與 類別完全相容,在引入 Java Collection 框架之前,該類別支持此方法。

 

參數:
value - 要搜尋的值
返回:
當且僅當此表中某個鍵映射到
value 參數時(由
equals 方法確定),返回
true;否則返回
false
拋出:
- 如果指定值為 null

put

public  put( key,              value)
將指定鍵映射到此表中的指定值。鍵和值都不可以為
null

通過使用與原來的鍵相同的鍵調用 get 方法,可以獲取相應的值。

 

 

指定者:
介面
<,> 中的
覆寫:
類別
<,> 中的
參數:
key - 與指定值相關聯的鍵
value - 與指定鍵相關聯的值
返回:
以前與
key 相關聯的值,如果
key 沒有映射關係,則返回
null
拋出:
- 如果指定鍵或值為 null

putIfAbsent

public  putIfAbsent( key,                      value)
如果指定鍵已經不再與某個值相關聯,則將它與給定值關聯。這等價於:
if (!map.containsKey(key))       return map.put(key, value);  else       return map.get(key);
除了原子地執行此操作之外。

 

指定者:
介面
<,> 中的
參數:
key - 與指定值相關聯的鍵
value - 與指定鍵相關聯的值
返回:
以前與指定鍵相關聯的值,如果該鍵沒有映射關係,則返回
null
拋出:
- 如果指定鍵或值為 null

putAll

public void putAll(
 m)
將指定映射中所有映射關係複製到此映射中。針對指定映射中的當前所有鍵,這些映射關係將替換此映射中具有的所有映射關係。

 

指定者:
介面
<,> 中的
覆寫:
類別
<,> 中的
參數:
m - 將存儲在此映射中的映射關係

remove

public  remove( key)
從此映射中移除鍵(及其相應的值)。如果該鍵不在映射中,則此方法不執行任何操作。

 

指定者:
介面
<,> 中的
覆寫:
類別
<,> 中的
參數:
key - 需要移除的鍵
返回:
key 關聯的先前值;如果
key 沒有映射關係,則返回
null
拋出:
- 如果指定鍵為 null

remove

public boolean remove( key,                       value)
只有目前將鍵的條目映射到給定值時,才移除該鍵的條目。這等效於:
if (map.containsKey(key) && map.get(key).equals(value)) {       map.remove(key);       return true;   } else return false;
不同之處在於該操作是以原子方式 (atomically) 執行的。

 

指定者:
介面
<,> 中的
參數:
key - 與指定值相關聯的鍵
value - 期望與指定鍵相關聯的值
返回:
如果該值被移除,則返回
true
拋出:
- 如果指定鍵為 null

replace

public boolean replace( key,                        oldValue,                        newValue)
只有目前將鍵的條目映射到給定值時,才替換該鍵的條目。這等效於:
if (map.containsKey(key) && map.get(key).equals(oldValue)) {       map.put(key, newValue);       return true;   } else return false;
不同之處在於該操作是以原子方式執行的。

 

指定者:
介面
<,> 中的
參數:
key - 與指定值相關聯的鍵
oldValue - 期望與指定鍵相關聯的值
newValue - 與指定鍵相關聯的值
返回:
如果該值被替換,則返回
true
拋出:
- 如果任何參數為 null

replace

public  replace( key,                  value)
只有目前將鍵的條目映射到某一值時,才替換該鍵的條目。這等效於:
if (map.containsKey(key)) {       return map.put(key, value);   } else return null;
不同之處在於該操作是以原子方式執行的。

 

指定者:
介面
<,> 中的
參數:
key - 與指定值相關聯的鍵
value - 與指定鍵相關聯的值
返回:
與指定鍵關聯的先前值;如果沒有該鍵的映射關係,則返回
null
拋出:
- 如果指定鍵或值為 null

clear

public void clear()
從該映射中移除所有映射關係

 

指定者:
介面
<,> 中的
覆寫:
類別
<,> 中的

keySet

public <> keySet()
返回此映射中包含的鍵的 視圖。該 set 受映射支持,所以對映射的改變可在該 set 中反映出來,反之亦然。該 set 支持元素的移除,它通過
Iterator.remove
Set.remove
removeAll
retainAll
clear 操作,從此映射中移除相應的映射關係。它不支持
add
addAll 操作。

該視圖的 iterator 是一個“弱一致”的迭代器,它從來不會拋出 ,並且確保可遍歷迭代器建構時存在的元素,此外還可能(但並不保證)反映建構後的所有修改。

 

 

指定者:
介面
<,> 中的
覆寫:
類別
<,> 中的
返回:
此映射中包含的鍵的 set 視圖

values

public <> values()
返回此映射中包含的值的 視圖。該 collection 受映射支持,所以對映射的改變可在該 collection 中反映出來,反之亦然。該 collection 支持元素的移除,它通過
Iterator.remove
Collection.remove
removeAll
retainAll
clear 操作,從此映射中移除相應的映射關係。它不支持
add
addAll 操作。

該視圖的 iterator 是一個“弱一致”迭代器,它不會拋出 ,並且確保可遍歷迭代器建構時存在的元素,此外還可能(但並不保證)反映建構後的所有修改。

 

 

指定者:
介面
<,> 中的
覆寫:
類別
<,> 中的
返回:
此映射中包含的值的 collection 視圖

entrySet

public <<,>> entrySet()
返回此映射所包含的映射關係的 視圖。該 set 受映射支持,所以對映射的改變可在該 set 中反映出來,反之亦然。該 set 支持元素的移除,它通過
Iterator.remove
Set.remove
removeAll
retainAll
clear 操作,從此映射中移除相應的映射關係。它不支持
add
addAll 操作。

該視圖的返回的 iterator 是一個“弱一致”迭代器,它不會拋出 ,並且確保可遍歷迭代器建構時存在的元素,此外還可能(但並不保證)反映建構後的所有修改。

 

 

指定者:
介面
<,> 中的
指定者:
類別
<,> 中的
返回:
此映射中包含的映射關係的 set 視圖

keys

public <> keys()
返回此表中鍵的列舉。

 

返回:
此表中鍵的列舉
另請參見:

elements

public <> elements()
返回此表中值的列舉。

 

返回:
此表中值的列舉
另請參見:

 

JavaTM 2 Platform
Standard Ed. 6


版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守。

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2010-06-16 19:53 阅读(...) 评论(...)

转载地址:http://xepni.baihongyu.com/

你可能感兴趣的文章
Linux中用st_mode判断文件类型
查看>>
Ubuntu修改host遇到unable to resolve host
查看>>
路由选择算法
查看>>
Objective-C 基础入门(一)
查看>>
Objective-C 基础入门(三) 读写文件与回调
查看>>
C++ STL标准库与泛型编程(一)概述
查看>>
C++ STL标准库与泛型编程(四)Deque、Queue、Stack 深度探索
查看>>
C++ STL标准库 算法
查看>>
JVM内存模型_Minor GC笔记
查看>>
SpringCloud学习之PassCloud——(一)PassCloud源代码下载
查看>>
Linux下安装Python环境并部署NLP项目
查看>>
Nginx篇-springCloud配置Gateway+Nginx进行反向代理和负载均衡
查看>>
Nginx篇-Nginx配置动静分离
查看>>
缓存篇-Redis缓存失效以及解决方案
查看>>
缓存篇-使用Redis进行分布式锁应用
查看>>
缓存篇-Redisson的使用
查看>>
phpquery抓取网站内容简单介绍
查看>>
找工作准备的方向(4月22日写的)
查看>>
关于fwrite写入文件后打开查看是乱码的问题
查看>>
用结构体指针前必须要用malloc,不然会出现段错误
查看>>