欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java基礎(chǔ)教程之HashMap迭代刪除使用方法

 更新時(shí)間:2019年05月30日 08:35:23   作者:小灰灰Blog  
這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)教程之HashMap迭代刪除使用方法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

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

I. Map 迭代刪除

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

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

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

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

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

2. 正確姿勢(shì)版

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

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

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

3. 簡(jiǎn)潔版

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

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

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

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • @Transactional解讀(作用、失效場(chǎng)景與解決方式)

    @Transactional解讀(作用、失效場(chǎng)景與解決方式)

    這篇文章主要介紹了關(guān)于@Transactional作用、失效場(chǎng)景與解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • java模擬實(shí)現(xiàn)銀行ATM機(jī)操作

    java模擬實(shí)現(xiàn)銀行ATM機(jī)操作

    這篇文章主要為大家詳細(xì)介紹了java模擬實(shí)現(xiàn)銀行ATM機(jī)操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • springboot入門之profile設(shè)置方式

    springboot入門之profile設(shè)置方式

    這篇文章主要介紹了springboot入門?profile設(shè)置方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • 解決CentOS7中運(yùn)行jar包報(bào)錯(cuò):xxx(Permission?denied)

    解決CentOS7中運(yùn)行jar包報(bào)錯(cuò):xxx(Permission?denied)

    在實(shí)際工作我們經(jīng)常會(huì)在linux上運(yùn)行Spring boot編寫的微服務(wù)程序,下面這篇文章主要給大家介紹了關(guān)于如何解決CentOS7中運(yùn)行jar包報(bào)錯(cuò):xxx(Permission?denied)的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • java 中ArrayList迭代的兩種實(shí)現(xiàn)方法

    java 中ArrayList迭代的兩種實(shí)現(xiàn)方法

    這篇文章主要介紹了java 中ArrayList迭代的兩種實(shí)現(xiàn)方法的相關(guān)資料,Iterator與for語(yǔ)句的結(jié)合,需要的朋友可以參考下
    2017-09-09
  • Mybatis實(shí)體類屬性與數(shù)據(jù)庫(kù)不一致解決方案

    Mybatis實(shí)體類屬性與數(shù)據(jù)庫(kù)不一致解決方案

    這篇文章主要介紹了Mybatis實(shí)體類屬性與數(shù)據(jù)庫(kù)不一致解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 詳解Spring全局異常處理的三種方式

    詳解Spring全局異常處理的三種方式

    這篇文章主要介紹了詳解Spring全局異常處理的三種方式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • Spring在代碼中獲取bean的幾種方式詳解

    Spring在代碼中獲取bean的幾種方式詳解

    這篇文章主要介紹了Spring在代碼中獲取bean的幾種方式詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Java 線程死鎖的問(wèn)題解決辦法

    Java 線程死鎖的問(wèn)題解決辦法

    這篇文章主要介紹了 Java 線程死鎖的問(wèn)題解決辦法的相關(guān)資料,希望通過(guò)本大家能幫助到大家,遇到類似問(wèn)題能夠解決,需要的朋友可以參考下
    2017-09-09
  • 如何使用Java調(diào)用Spark集群

    如何使用Java調(diào)用Spark集群

    這篇文章主要介紹了如何使用Java調(diào)用Spark集群,我搭建的Spark集群的版本是2.4.4,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-02-02

最新評(píng)論