中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java基礎教程之HashMap迭代刪除使用方法

發布時間:2020-10-24 08:21:29 來源:腳本之家 閱讀:164 作者:小灰灰Blog 欄目:編程語言

前言

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

I. Map 迭代刪除

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

1. 非常不優雅版本

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

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

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

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

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

2. 正確姿勢版

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

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

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

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

3. 簡潔版

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

Map<String, Integer> 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或者有更好的建議,歡迎批評指正,不吝感激

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东乌珠穆沁旗| 格尔木市| 泰顺县| 哈尔滨市| 沁水县| 娄烦县| 疏附县| 乌鲁木齐县| 专栏| 桂阳县| 鄱阳县| 沧源| 沾化县| 华坪县| 台安县| 吉林省| 全南县| 获嘉县| 扶绥县| 贺兰县| 吕梁市| 高邮市| 肇源县| 伊金霍洛旗| 荣昌县| 隆回县| 唐河县| 兰西县| 巴楚县| 文昌市| 奉贤区| 西宁市| 綦江县| 麦盖提县| 工布江达县| 视频| 肇庆市| 察隅县| 苏尼特左旗| 石林| 开封市|