Enumeration 使用中一些經驗

2021-08-22 14:17:11 字數 1346 閱讀 5951

vector v = new vector();

for(int i=0;i<10;i++)

v.add(new integer(i));

enumeration e = v.elements();

while(e.hasmoreelements())

system.out.println(v.size());

如果沒去執行這段程式,可能有的人會認為

system.out.println(v.size());

輸出來的是0,但實際上是5,為什麼會這樣的呢?

在回答這個問題前,我們先看看2段**

public enumerationelements()

public e nextelement()

}throw new nosuchelementexception("vector enumeration");}};

}

上面這段**就是v.elements()**

public synchronized void removeelementat(int index)

else if (index < 0)

int j = elementcount - index - 1;

if (j > 0)

elementcount--;

elementdata[elementcount] = null; /* to let gc do its work */

}

上面這段**,就是v.remove(object o)的主核心**

分析:先看第一段**:

從**中,我們得知enumenation.nextelement 會將指標下劃到下乙個元素

在看第二段**:

從**中,我們得知v.remove 進行操作時,是將後面的陣列覆蓋掉 所要刪除元素的位置,最後乙個則用null

現在我們理順下思路吧,

v 裡面存放的數是 0 1 2 3 4 5 6 7 8 9

首先e.nextelement() 指標所在位置就是 0,也就是陣列的第乙個索引

當我們進行v.reomve的時候,後面的陣列覆蓋了前面的陣列

v.remove 處理完後: 1 2 3 4 5 6 7 8 9

這時候,進入下次迴圈

e.nextelement() 這時候的指標位置就是 2, 而漏過了 1 這個資料,

迴圈結束後,就漏掉了5個數,

所以,大家在做這樣的remove的時候,需要特別注意下

python中一切皆物件 Python中一切皆物件

1.python一切皆物件函式和類也是物件,屬於python的一等公民,體現在以下四點 1.賦值給乙個變數 將函式賦值給乙個變數,對這個變數的操作實際上就是對這個函式的操作def say name superzjx print name my func say my func superzjx cl...

工作中一些工具的使用!

工作中經常會用到壓縮跟替換命令,用到的時候網上查一下,用完也就忘了。對於工具我的態度是 會用就好。但經常的查詢搜尋搞的我也很煩,還是做個筆記吧,自己做的也是最適合自己的,等以後什麼也記不住了,至少還有存世的東西。嘻嘻 將當前目錄下所有檔案壓縮成rootfs.tar.bz2 tar tar jcvf ...

Hudson使用中一些注意事項

hudson使用中一些注意事項 老寅的地盤 iteye技術 最近在使用hudson做持續整合,使用中發現幾個問題,在這裡做下備忘,可以方便以後的使用 1.當使用hudson的時候,會出現硬碟空間不夠的情況,這是因為,hudson會記錄歷史整合記錄,這些記錄,非常占用空間,為了比較這種情況,需要在hu...