2016-04-04 194 views
2

有人能解釋這個問題...爲什麼此代碼會產生IndexOutOfBoundsException?

爲什麼:

String letters[] = { "A", "B", "C" }; 
ArrayList<String> list = new ArrayList<String>(3); 

for(int i=2 ; i >= 0 ; i--) 
    list.set(i,letters[i]); 


for(int i=0 ; i < list.size() ; i++) 
    System.out.print(list.get(i)); 

產生: IndexOutOfBoundsException

回答

5

因爲new ArrayList<String>(3)初始容量 3,而不是一個列表中創建一個ArrayList有3個元素:

ArrayList<String> list = new ArrayList<String>(3); 
list.size();//output 0 

因此,當您第一次致電list.set(i,letters[i])時,您嘗試訪問不存在的元素2。

在另一方面,該代碼會工作的方式,你就打算:

ArrayList<String> list = new ArrayList<String>(Collections.nCopies(3, null)); 
相關問題