摘要:的迭代刪除,和我們常見的,不太一樣,不能直接獲取對象,提供的刪除方法也是單個的,根據進行刪除,如果我們有個需求,將中滿足某些條件的元素刪除掉,要怎么做呢迭代刪除迭代刪除,在不考慮并發安全的前提下,我們看下可以怎么支持非常不優雅版本我們知道并
map的迭代刪除,和我們常見的list,set不太一樣,不能直接獲取Iteraotr對象,提供的刪除方法也是單個的,根據key進行刪除,如果我們有個需求,將map中滿足某些條件的元素刪除掉,要怎么做呢?
I. Map 迭代刪除迭代刪除,在不考慮并發安全的前提下,我們看下可以怎么支持
1. 非常不優雅版本我們知道map并不是繼承自Collection接口的,HashMap 也沒有提供迭代支持,既然沒法直接迭代,那我就老老實的low b版好了
Mapmap = 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有啊,所以我們可以通過它來實現遍歷刪除
Mapmap = 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之后,針對容器提供了很多簡潔的操作方式,迭代刪除這方面可以說更加簡單了
Map4. 其他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);
盡信書則不如,已上內容,純屬一家之言,因個人能力有限,難免有疏漏和錯誤之處,如發現bug或者有更好的建議,歡迎批評指正,不吝感激
微博地址: 小灰灰Blog
QQ: 一灰灰/3302797840
個人站點 一灰灰Blog: https://liuyueyi.github.io/he...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74686.html
摘要:中的使用及在中的沖突方案引言簡稱是在作為的替代選擇新引入的,是包的重要成員。為了解決在頻繁沖突時性能降低的問題,中使用平衡樹來替代鏈表存儲沖突的元素。目前,只有和會在頻繁沖突的情況下使用平衡樹。 java中ConcurrentHashMap的使用及在Java 8中的沖突方案 1、引言 ConcurrentHashMap(簡稱CHM)是在Java 1.5作為Hashtable的替代選擇新...
摘要:繼承于,實現了接口。的定義的定義從中,我們可以看出和都實現了接口。指向的的總的大小是迭代器還是枚舉類的標志為,表示它是迭代器否則,是枚舉類。默認加載因子指定容量大小的構造函數當的實際容量閾值時,閾值總的容量加載因子,就將的容量翻倍。 概要 學完了Map的全部內容,我們再回頭開開Map的框架圖。showImg(https://segmentfault.com/img/remote/146...
摘要:底層基于拉鏈式的散列結構,并在中引入紅黑樹優化過長鏈表的問題。在其之上,通過維護一條雙向鏈表,實現了散列數據結構的有序遍歷。 原文地址 LinkedHashMap LinkedHashMap繼承自HashMap實現了Map接口。基本實現同HashMap一樣,不同之處在于LinkedHashMap保證了迭代的有序性。其內部維護了一個雙向鏈表,解決了 HashMap不能隨時保持遍歷順序和插...
摘要:返回值存在返回對應的值不存在返回創建集合對象趙麗穎楊穎林志玲楊穎迪麗熱巴把指定的鍵所對應的鍵值對元素在集合中刪除,返回被刪除元素的值。 package com.itheima.demo01.Map; import java.util.HashMap;import java.util.Map; /* java.util.Map集合 Map集合的特點: 1.Map集合是一個雙列集合...
閱讀 1025·2021-11-23 10:11
閱讀 3863·2021-11-16 11:50
閱讀 930·2021-10-14 09:43
閱讀 2717·2021-10-14 09:42
閱讀 2716·2021-09-22 16:02
閱讀 1061·2019-08-29 10:57
閱讀 3383·2019-08-29 10:57
閱讀 2274·2019-08-26 13:52