為什么獲取get[0]就正確,獲取get[1]就下標越界,不是已經添加了一個嗎,不就相當于有兩個了嗎
public List courSelect;
public ListTest(){
this.courSelect = new ArrayList();
}
public void testAdd(){
Course co = new Course("1","java");
courSelect.add(co);
Course senm = (Course) courSelect.get(0);
System.out.println(senm.id
+senm.name);
Course se = new Course("0","sql");
courSelect.add(0, se);
Course sen = (Course) courSelect.get(0);
System.out.println(sen.id+ " : " +sen.name);
}
public static void main(String[] args){
ListTest li = new ListTest();
li.testAdd();
}
2016-12-20
我簡單回答一下。
add()方法中的數字,指的是添加位置。
get()方法中的數字,指的是要調用的位置。
add()方法的使用。初次往里面添加的話,添加位置只能是0位置,0可以省略不寫的。 ?當第二次需要添加的時候,有兩個添加位置,0位置和1位置。當你添加到0位置的時候,也就是把原本0位置存在的屬性值,擠到了1位置。你也可以添加到1位置,這個時候1可以省略不寫。每一次的添加都是對位置的從新排序。 ? ? 當你需要第三次添加的時候,有0位置,1位置,2位置這樣3個選擇。選擇最后一個位置的話,也就是2位置,2可以省略不寫。選擇1位置或者0位置就是把需要添加的屬性值插進去,把原本存在的屬性值擠到下一位。 ? ? ? 上面所說的添加,指的是每次添加一個屬性值。
get()方法的使用。括號里面的數字是幾調用的就是幾號位置的屬性值。記住每一次添加都是對前面屬性值的從新排序,調用幾號位置,輸出的就是幾號位置的屬性值。
這樣應該是簡單易懂吧
26分鐘前
2016-10-28
Course co = new Course("1","java");
courSelect.add(co);
Course senm = (Course) courSelect.get(0);
這個get(1)會下標越界,因為你此時只添加了一個元素。
Course se = new Course("0","sql");
courSelect.add(0, se);
Course sen = (Course) courSelect.get(0);
這個get(1)不會有問題,而且get(1)得出的結果是("1","java")。
寫了下標0,不會把之前那個擠掉,會把之前的擠到下一個位置1上
2016-10-28
第一個get[0],第二個get[1]應該不會報錯吧,就是重復取出("1","java")。
2016-10-28
因為你下面add進去的時候,寫了下標0,所以把之前那個擠掉了把