真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

前言

成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的鞏留網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

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

I. Map 迭代刪除

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

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

我們知道m(xù)ap并不是繼承自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);

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

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

2. 正確姿勢版

雖然Map沒有迭代,但是它的entrySet有啊,所以我們可以通過它來實現(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);

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

3. 簡潔版

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

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)容,純屬一家之言,因個人能力有限,難免有疏漏和錯誤之處,如發(fā)現(xiàn)bug或者有更好的建議,歡迎批評指正,不吝感激

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對創(chuàng)新互聯(lián)的支持。


分享文章:Java基礎(chǔ)教程之HashMap迭代刪除使用方法
新聞來源:http://weahome.cn/article/gjsgco.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部