国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java之HashMap迭代刪除使用方法小結(jié)

mengbo / 2839人閱讀

摘要:的迭代刪除,和我們常見的,不太一樣,不能直接獲取對(duì)象,提供的刪除方法也是單個(gè)的,根據(jù)進(jìn)行刪除,如果我們有個(gè)需求,將中滿足某些條件的元素刪除掉,要怎么做呢迭代刪除迭代刪除,在不考慮并發(fā)安全的前提下,我們看下可以怎么支持非常不優(yōu)雅版本我們知道并

map的迭代刪除,和我們常見的list,set不太一樣,不能直接獲取Iteraotr對(duì)象,提供的刪除方法也是單個(gè)的,根據(jù)key進(jìn)行刪除,如果我們有個(gè)需求,將map中滿足某些條件的元素刪除掉,要怎么做呢?

I. Map 迭代刪除

迭代刪除,在不考慮并發(fā)安全的前提下,我們看下可以怎么支持

1. 非常不優(yōu)雅版本

我們知道m(xù)ap并不是繼承自Collection接口的,HashMap 也沒有提供迭代支持,既然沒法直接迭代,那我就老老實(shí)的low b版好了

Map map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);

List removeKey = new ArrayList<>();
for (Map.Entry e: map.entrySet()) {
    if (e.getValue() % 2== 0) {
        removeKey.add(e.getKey());
    }
}
removeKey.forEach(map::remove);

上面的實(shí)現(xiàn)怎么樣?并沒有什么毛病

(為啥不直接在遍歷中刪除?)

2. 正確姿勢(shì)版

雖然Map沒有迭代,但是它的entrySet有啊,所以我們可以通過它來實(shí)現(xiàn)遍歷刪除

Map map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);

Iterator> iterator = map.entrySet().iterator();
Map.Entry entry;
while (iterator.hasNext()) {
    entry = iterator.next();
    if (entry.getValue() % 2 == 0) {
        iterator.remove();
    }
}
System.out.println(map);

上面這個(gè)可能是我們經(jīng)常使用的操作姿勢(shì)了,利用迭代器來操作元素

3. 簡(jiǎn)潔版

到j(luò)dk8之后,針對(duì)容器提供了很多簡(jiǎn)潔的操作方式,迭代刪除這方面可以說更加簡(jiǎn)單了

Map map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);
map.entrySet().removeIf(entry -> entry.getValue() % 2 == 0);
4. 其他

盡信書則不如,已上內(nèi)容,純屬一家之言,因個(gè)人能力有限,難免有疏漏和錯(cuò)誤之處,如發(fā)現(xiàn)bug或者有更好的建議,歡迎批評(píng)指正,不吝感激

微博地址: 小灰灰Blog

QQ: 一灰灰/3302797840

個(gè)人站點(diǎn) 一灰灰Blog: https://liuyueyi.github.io/he...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/74686.html

相關(guān)文章

  • java中ConcurrentHashMap使用及在Java 8中的沖突方案

    摘要:中的使用及在中的沖突方案引言簡(jiǎn)稱是在作為的替代選擇新引入的,是包的重要成員。為了解決在頻繁沖突時(shí)性能降低的問題,中使用平衡樹來替代鏈表存儲(chǔ)沖突的元素。目前,只有和會(huì)在頻繁沖突的情況下使用平衡樹。 java中ConcurrentHashMap的使用及在Java 8中的沖突方案 1、引言 ConcurrentHashMap(簡(jiǎn)稱CHM)是在Java 1.5作為Hashtable的替代選擇新...

    kun_jian 評(píng)論0 收藏0
  • Map總結(jié),看這篇就夠了

    摘要:繼承于,實(shí)現(xiàn)了接口。的定義的定義從中,我們可以看出和都實(shí)現(xiàn)了接口。指向的的總的大小是迭代器還是枚舉類的標(biāo)志為,表示它是迭代器否則,是枚舉類。默認(rèn)加載因子指定容量大小的構(gòu)造函數(shù)當(dāng)?shù)膶?shí)際容量閾值時(shí),閾值總的容量加載因子,就將的容量翻倍。 概要 學(xué)完了Map的全部?jī)?nèi)容,我們?cè)倩仡^開開Map的框架圖。showImg(https://segmentfault.com/img/remote/146...

    yzzz 評(píng)論0 收藏0
  • Java集合LinkedHashMap源碼解析

    摘要:底層基于拉鏈?zhǔn)降纳⒘薪Y(jié)構(gòu),并在中引入紅黑樹優(yōu)化過長鏈表的問題。在其之上,通過維護(hù)一條雙向鏈表,實(shí)現(xiàn)了散列數(shù)據(jù)結(jié)構(gòu)的有序遍歷。 原文地址 LinkedHashMap LinkedHashMap繼承自HashMap實(shí)現(xiàn)了Map接口。基本實(shí)現(xiàn)同HashMap一樣,不同之處在于LinkedHashMap保證了迭代的有序性。其內(nèi)部維護(hù)了一個(gè)雙向鏈表,解決了 HashMap不能隨時(shí)保持遍歷順序和插...

    QiShare 評(píng)論0 收藏0
  • Map學(xué)習(xí)一基本操作方法put,get,remove,containsKey

    摘要:返回值存在返回對(duì)應(yīng)的值不存在返回創(chuàng)建集合對(duì)象趙麗穎楊穎林志玲楊穎迪麗熱巴把指定的鍵所對(duì)應(yīng)的鍵值對(duì)元素在集合中刪除,返回被刪除元素的值。 package com.itheima.demo01.Map; import java.util.HashMap;import java.util.Map; /* java.util.Map集合 Map集合的特點(diǎn): 1.Map集合是一個(gè)雙列集合...

    TwIStOy 評(píng)論0 收藏0
  • Java-集合

    摘要:對(duì)象稱作迭代器,接口方法能以迭代方式逐個(gè)訪問集合中各個(gè)元素,并可以從中除去適當(dāng)?shù)脑亍R幌嗤c(diǎn)都是迭代器,當(dāng)需要對(duì)集合中元素進(jìn)行遍歷不需要干涉其遍歷過程時(shí),這兩種迭代器都可以使用。 Collection接口 首先,看一下Collection集合的基本結(jié)構(gòu):showImg(https://segmentfault.com/img/bVDYWR?w=743&h=380); 1.Collec...

    happen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<