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

前言

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

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

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

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

總結(jié)

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

分享名稱(chēng):Java基礎(chǔ)教程之HashMap迭代刪除使用方法
文章來(lái)源:http://muchs.cn/article20/gjsgco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)全網(wǎng)營(yíng)銷(xiāo)推廣、品牌網(wǎng)站設(shè)計(jì)網(wǎng)站收錄、用戶(hù)體驗(yàn)、云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司