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

資訊專欄INFORMATION COLUMN

Java之HashMap迭代刪除使用方法小結

mengbo / 2838人閱讀

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

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

I. Map 迭代刪除

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

1. 非常不優雅版本

我們知道map并不是繼承自Collection接口的,HashMap 也沒有提供迭代支持,既然沒法直接迭代,那我就老老實的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);

上面的實現怎么樣?并沒有什么毛病

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

2. 正確姿勢版

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

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);

上面這個可能是我們經常使用的操作姿勢了,利用迭代器來操作元素

3. 簡潔版

到jdk8之后,針對容器提供了很多簡潔的操作方式,迭代刪除這方面可以說更加簡單了

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. 其他

盡信書則不如,已上內容,純屬一家之言,因個人能力有限,難免有疏漏和錯誤之處,如發現bug或者有更好的建議,歡迎批評指正,不吝感激

微博地址: 小灰灰Blog

QQ: 一灰灰/3302797840

個人站點 一灰灰Blog: https://liuyueyi.github.io/he...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74686.html

相關文章

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

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

    kun_jian 評論0 收藏0
  • Map總結,看這篇就夠了

    摘要:繼承于,實現了接口。的定義的定義從中,我們可以看出和都實現了接口。指向的的總的大小是迭代器還是枚舉類的標志為,表示它是迭代器否則,是枚舉類。默認加載因子指定容量大小的構造函數當的實際容量閾值時,閾值總的容量加載因子,就將的容量翻倍。 概要 學完了Map的全部內容,我們再回頭開開Map的框架圖。showImg(https://segmentfault.com/img/remote/146...

    yzzz 評論0 收藏0
  • Java集合LinkedHashMap源碼解析

    摘要:底層基于拉鏈式的散列結構,并在中引入紅黑樹優化過長鏈表的問題。在其之上,通過維護一條雙向鏈表,實現了散列數據結構的有序遍歷。 原文地址 LinkedHashMap LinkedHashMap繼承自HashMap實現了Map接口。基本實現同HashMap一樣,不同之處在于LinkedHashMap保證了迭代的有序性。其內部維護了一個雙向鏈表,解決了 HashMap不能隨時保持遍歷順序和插...

    QiShare 評論0 收藏0
  • Map學習一基本操作方法put,get,remove,containsKey

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

    TwIStOy 評論0 收藏0
  • Java-集合

    摘要:對象稱作迭代器,接口方法能以迭代方式逐個訪問集合中各個元素,并可以從中除去適當的元素。一相同點都是迭代器,當需要對集合中元素進行遍歷不需要干涉其遍歷過程時,這兩種迭代器都可以使用。 Collection接口 首先,看一下Collection集合的基本結構:showImg(https://segmentfault.com/img/bVDYWR?w=743&h=380); 1.Collec...

    happen 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<