摘要:源碼根據(jù)位置移除元素,返回刪除元素根據(jù)元素移除元素直接刪除不返回刪除的元素移除指定范圍的元素移除所有在傳入?yún)⑷爰蟽?nèi)的參數(shù)清空隊(duì)列內(nèi)元素,但隊(duì)列還實(shí)際存在
源碼
// 根據(jù)位置移除元素,返回刪除元素 public E remove(int index) { rangeCheck(index); modCount++; E oldValue = elementData(index); int numMoved = size - index - 1; if (numMoved > 0) System.arraycopy(elementData, index+1, elementData, index, numMoved); elementData[--size] = null; // clear to let GC do its work return oldValue; } // 根據(jù)元素移除元素 public boolean remove(Object o) { if (o == null) { for (int index = 0; index < size; index++) if (elementData[index] == null) { fastRemove(index); return true; } } else { for (int index = 0; index < size; index++) if (o.equals(elementData[index])) { fastRemove(index); return true; } } return false; }
// 直接刪除不返回刪除的元素 private void fastRemove(int index) { modCount++; int numMoved = size - index - 1; if (numMoved > 0) System.arraycopy(elementData, index+1, elementData, index, numMoved); elementData[--size] = null; // clear to let GC do its work } // 移除指定范圍的元素 protected void removeRange(int fromIndex, int toIndex) { modCount++; int numMoved = size - toIndex; System.arraycopy(elementData, toIndex, elementData, fromIndex, numMoved); // clear to let GC do its work int newSize = size - (toIndex-fromIndex); for (int i = newSize; i < size; i++) { elementData[i] = null; } size = newSize; }
// 移除所有在傳入?yún)⑷爰蟽?nèi)的參數(shù) public boolean removeAll(Collection> c) { Objects.requireNonNull(c); return batchRemove(c, false); } // 清空隊(duì)列內(nèi)元素,但隊(duì)列還實(shí)際存在 public void clear() { modCount++; // clear to let GC do its work for (int i = 0; i < size; i++) elementData[i] = null; size = 0; }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72770.html
摘要:概述列表是一款即實(shí)用又常用的數(shù)據(jù)結(jié)構(gòu),用來(lái)存儲(chǔ)線性結(jié)構(gòu)的數(shù)據(jù)。在中對(duì)的支持主要有兩種,也是最常用的兩種。本文主要分析的源碼。的底層主要是基于鏈表來(lái)實(shí)現(xiàn)的。但是返回的卻沒(méi)有這樣的等同關(guān)系。那么其方法返回的只是一個(gè)類型的數(shù)組,而不是類型。 概述 列表(list)是一款即實(shí)用又常用的數(shù)據(jù)結(jié)構(gòu),用來(lái)存儲(chǔ)線性結(jié)構(gòu)的數(shù)據(jù)。在JDK中對(duì)List的支持主要有兩種,也是最常用的兩種。一種是ArrayLi...
摘要:對(duì)于理論算法不再這累贅了。在查閱資料的時(shí)候發(fā)現(xiàn)算法不管用棧還是正則等等,似乎只處理操作符是的數(shù),這是很不可取的。所以需要先將中綴表達(dá)式轉(zhuǎn)化成后綴并標(biāo)記多位數(shù)的操作符,然后在處理后綴表達(dá)式。 最后一次更新于2019/07/08 效果演示圖 showImg(https://segmentfault.com/img/bVbuIwj?w=388&h=290); 功能與流程 要制作一個(gè)簡(jiǎn)易計(jì)算器...
摘要:的操作和遍歷的三大集合即。的實(shí)現(xiàn)類原理比較簡(jiǎn)單,比較復(fù)雜,而其實(shí)是基于的一種實(shí)現(xiàn)。 List&Map&Set的操作和遍歷 Java的三大集合即:Set、List、Map。 Set:代表無(wú)序、不可重復(fù)的集合,常用的有HashSet(哈希表實(shí)現(xiàn))、TreeSet(紅黑樹(shù)實(shí)現(xiàn)); List:代表有序、可以重復(fù)的集合,比較常用的有ArrayList(數(shù)組實(shí)現(xiàn))、LinkedList(鏈表實(shí)現(xiàn)...
摘要:集合的長(zhǎng)度的是可變的,可以根據(jù)元素的增加而增長(zhǎng)。如果元素個(gè)數(shù)不是固定的推薦用集合。線程安全,效率低。相對(duì)查詢慢線程安全的相對(duì)增刪慢數(shù)組結(jié)構(gòu)底層數(shù)據(jù)結(jié)構(gòu)是鏈表,查詢慢,增刪快。線程不安全,效率高。 1_對(duì)象數(shù)組的概述和使用 A:案例演示 需求:我有5個(gè)學(xué)生,請(qǐng)把這個(gè)5個(gè)學(xué)生的信息存儲(chǔ)到數(shù)組中,并遍歷數(shù)組,獲取得到每一個(gè)學(xué)生信息。 import net.allidea.bean.Stu...
閱讀 1115·2021-10-14 09:42
閱讀 1417·2021-09-22 15:11
閱讀 3346·2019-08-30 15:56
閱讀 1283·2019-08-30 15:55
閱讀 3658·2019-08-30 15:55
閱讀 915·2019-08-30 15:44
閱讀 2054·2019-08-29 17:17
閱讀 2101·2019-08-29 15:37