第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 forEach 或 forEachValue 方法

如何使用 forEach 或 forEachValue 方法

慕容森 2023-06-28 15:51:00
我有一個ConcurrentHashMap<String, Document>,我必須調(diào)用一個方法來刪除每個值的文件。Document 是將文檔表示為文件的類。我在 eclipse 上發(fā)現(xiàn)了 forEach 和 forEachValue 方法(具有許多簽名),但我不知道如何使用它們(有人可以向我解釋一下嗎?)。我可以調(diào)用 ConcurrentHashMap 方法:elements 方法獲得Enumeration<V>Values 方法獲取 aCollection<V>并因此獲取迭代器哪些解決方案更好?
查看完整描述

3 回答

?
MYYA

TA貢獻1868條經(jīng)驗 獲得超4個贊

您可以使用 ,example 輕松迭代map鍵或值for each loop:


Map<String,Document> chm=new ConcurrentHashMap<String,document>();

//this for each loop will iterate over the values of the map

//to iterate over the keys you write: for(String str : chm.keySet())

for(Document doc : chm.values()){

   // code to delete the document 

   // example(if your Document exposes a delete method): doc.delete();

}

正如您在 a 中看到的,for each loop您首先聲明對象的類型:String、int等Document...


第二部分是您的局部變量,例如在上面的情況下,文檔將是Document您的每個變量map,您可以調(diào)用與它相關(guān)的任何方法。


第三部分是the :,你可以把它想象成“in”這個詞


最后一部分是您想要迭代的內(nèi)容,在上面的情況下它是 的map值


Enumeration 和 Iterator 接口的主要區(qū)別在于 Enumeration 只遍歷 Collection 對象,在使用 Enumeration 進行迭代時不能對集合進行任何修改。其中 Iterator 接口允許您在遍歷 Collection 對象時刪除元素(使用該remove()方法)。


查看完整回答
反對 回復(fù) 2023-06-28
?
慕容708150

TA貢獻1831條經(jīng)驗 獲得超4個贊

forEach方法以 aBiConsumer作為參數(shù),其中消費者的輸入是映射中的鍵和值對:

void?forEach(long?parallelismThreshold,?BiConsumer<??super?K,??super?V>?action)

forEachValue方法以 aConsumer作為參數(shù),其中消費者的輸入只是映射中的值:

void?forEachValue(long?parallelismThreshold,?Consumer<??super?V>?action)

在每種方法中,您可以定義文檔parallelismThreshold中的說明:

這些批量操作接受parallelismThreshold 參數(shù)。如果估計當(dāng)前地圖大小小于給定閾值,方法將按順序進行。使用 Long.MAX_VALUE 值會抑制所有并行性。

因此forEach,如果您需要鍵和值,請使用forEachValue,如果您只需要值,請使用:

例如

myMap.forEach(Long.MAX_VALUE,?(key,?document)?->?deleteDocument(key,?document));
...
public?void?deleteDocument(String?key,?Document?d)?{?...?}

或者:

myMap.forEachValue(Long.MAX_VALUE,?document?->?deleteDocument(document));
...
public?void?deleteDocument(Document?d)?{?...?}


查看完整回答
反對 回復(fù) 2023-06-28
?
開心每一天1111

TA貢獻1836條經(jīng)驗 獲得超13個贊

如果您需要對 中的每個值執(zhí)行某些操作ConcurrentHashMap,您有很多選擇:

for (Map.Entry<String, Document> entry : map.entrySet()) {

? ? String key = entry.getKey();

? ? Document doc = entry.getValue();

? ? // code here

}


for (String key : map.keySet()) {

? ? // code here

}


for (Document doc : map.values()) {

? ? // code here

}

map.forEach((key, doc) -> {

? ? // code here

});


map.forEach(1, (key, doc) -> {

? ? // code here will run in parallel

});


map.forEachEntry(1, entry -> {

? ? String key = entry.getKey();

? ? Document doc = entry.getValue();

? ? // code here will run in parallel

});


map.forEachKey(1, key -> {

? ? // code here will run in parallel

});


map.forEachValue(1, doc -> {

? ? // code here will run in parallel

});

上面的示例使用了 lambda 表達式塊,但是如果code here只是一條語句,您可以省略{}大括號和;語句終止符,并將所有內(nèi)容保留在一行中,使其看起來更清晰,例如


map.forEachValue(Long.MAX_VALUE, doc -> DocUtil.deleteFile(doc));

或者使用方法參考:


map.forEachValue(Long.MAX_VALUE, DocUtil::deleteFile);

您更喜歡上述哪一個完全取決于您,部分取決于您是否需要key、doc或兩者,以及是否需要并行處理。


刪除文件時并行處理可能不會提高性能,因為這可能需要磁盤訪問,但如果性能至關(guān)重要,您可以嘗試并行運行并親自看看這是否有幫助。


查看完整回答
反對 回復(fù) 2023-06-28
  • 3 回答
  • 0 關(guān)注
  • 284 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號