不廢話,先上代碼:
ArrayList<Integer> col = new ArrayList<Integer>(); System.out.println("Initial size: " + col.size()); for(int i = 0; i < 20; i++) col.add(i + 10);
顯然,上面這段代碼再簡單不過了,建立一個Interger類型參數的ArrayList.
於是考慮到要從ArrayList刪除兩個元素,比如10, 25。初步設想的代碼如下:
col.remove(10);
col.remove(25);
基於這種設想的原因是,既然ArrayList<Integer>里的類型是Integer,我傳入一個int的應該可以自動實現autoboxing.那么,如果和設想的一樣,col中的10和25兩個元素都被刪除了。
實際運行的結果不然:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 25, Size: 20 at java.util.ArrayList.rangeCheck(ArrayList.java:604) at java.util.ArrayList.remove(ArrayList.java:445) at CollectionBasics.main(CollectionBasics.java:54)
從錯誤中間可以看到,提示的是訪問數組索引越界了。怎么會這樣呢?很顯然,傳入的10,25被當成索引而不是要移除的元素。
察看java doc里面才發現,里面有兩個remove方法,分別定義如下:
public E remove(int index); public boolean remove(Object o);
當我們傳入int類型的時候,會自動被當成上面那個方法來調用。而下面那個移除某個特定元素的方法是需要傳入一個Object對象。所以,為了移除制定的元素而不至於引起混淆的話,可以將傳入的int先封裝一下:
在北京呆了半年,也有了自己的經驗。
第一:剛開始找工作的時候,不能把自己放的太低,要有自己的最低底線,不能說工資隨便給,要有自己的目標。因為起點越低以后越難爬。 有些公司的hr就不喜歡隨隨便便看不清自己的人。所以,第一份工作要有自己的最低額度,轉正之后要比實習工資翻個1.5倍。
第二:感覺需要調漲工資的時候, 就提出來,不要猶豫,因為可能老板早就有這個念頭,但是你沒提,老板干嘛要給你漲。提出來是必須的,不管失敗與成功,如果失敗了,老板也會重新看待你這個人,覺得你這個人不是樂於現在的工作狀況。
第三、要漲工資的時候,老板一般會問,你想要多少。所以事前要有一個期望工資和最低工資,如果老板聽了你的期望工資,一口答應,那就好事;但是,如果老板講價還價,不能低於你的最低工資。因為你沒有期望工資,只跟老板說了你的最低工資,老板一聽就同意了,你肯定會后悔當初怎么沒多要。