亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問一下在java中的arrayList,為什么這么寫就異常呢?

請問一下在java中的arrayList,為什么這么寫就異常呢?

慕碼人2483693 2022-01-20 19:15:51
a1.add(2,new Bread(1, "荷葉", "小", "饅頭"));a1.add(1,new Bread(2, "飄香", "中", "蛋黃派"));a1.add(0,new Bread(3, "巨無霸", "大", "漢堡包"));按0,1,2來添加就沒事,可是一調過來就異常,為什么呢?代碼:public class Bread {int num;String brand;String size;String type;public Bread(int num, String brand, String size, String type) {super();this.num = num;this.brand = brand;this.size = size;this.type = type;}public String toString() {return num+":"+brand+size+type;}}import java.util.ArrayList;import java.util.LinkedList;public class Example {public static void main(String[] args) {LinkedList<Bread> a1=new LinkedList<Bread>();a1.add(2,new Bread(1, "荷葉", "小", "饅頭"));a1.add(1,new Bread(2, "飄香", "中", "蛋黃派"));a1.add(0,new Bread(3, "巨無霸", "大", "漢堡包"));for(int j=0;j<a1.size();j++){Bread ss=a1.get(j);System.out.println(ss);}}}
查看完整描述

3 回答

?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

add方法屬于追加方法,就是向數組的尾部增加數據,但是用的是LinkList是可以頭部增加數據的,使用方法addFirst(E element)就可以了。根據你的代碼錯誤應該是這樣的,一開始集合是長度是0,代表沒有元素存在,那么這個下標為2的位置不存在,但是你卻要這個位置后面增加數據,這樣就錯了,因為集合在這個時候還沒有得到系統為下標為2的位置分配內存空間,程序執行的時候找不到這個為下標為2的位置,就是你增加的數據找不到地方擺,這樣就錯了。一般情況下就是使用add(E element)方法就可以了,這樣add(int index, E element)方法的適合于在指定在某條數據后面追加數據(一般這條數據應該不是最后一條),就是說在這個集合里面我的數據已經填充好了,這個時候我要在其中的一條數據后面追加一條數據,那么我就用add(int index, E element)方法去追加數據,后面所存在數據就會被往后擠一個位置。

查看完整回答
反對 回復 2022-01-23
?
Cats萌萌

TA貢獻1805條經驗 獲得超9個贊

public void add(int index, E element) {
if (index > size || index < 0)
throw new IndexOutOfBoundsException(
"Index: "+index+", Size: "+size);

ensureCapacity(size+1); // Increments modCount!!
System.arraycopy(elementData, index, elementData, index + 1,
size - index);
elementData[index] = element;
size++;
}



查看完整回答
反對 回復 2022-01-23
?
Helenr

TA貢獻1780條經驗 獲得超4個贊

嗯,是這樣的,我簡單寫了個代碼重現了。ArrayList是數組List,它是逐次增加大小的,就是要從小到大添加元素,它維護元素的順序。

查看完整回答
反對 回復 2022-01-23
  • 3 回答
  • 0 關注
  • 305 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號