[英]arrayList/vector add element at position , method
我正在嘗試做類似的事情:
ArrayList<String> al = new ArrayList(15);
al.add(5, "test");
我的媒介情況,但沒關系。 我缺少一些瑣碎的東西。
但是我得到索引超出綁定的異常。
方法api說明:
“將指定的元素插入此列表中的指定位置。將當前在該位置的元素(如果有)和任何后續元素右移(將其索引添加一個)。”-如此嗎?
我的情況是我得到UDP數據包,並嘗試根據報頭序列號將其數據放入結構中。
更新:.set也是如此
對於初學者來說,ArrayList的構造函數令人困惑。 把
new ArrayList(15);
基本上只是對程序的優化。 ArrayList類基本上只是本機Java數組的包裝器。 在此示例中,將使用15個元素創建實際的內部數組。 當您放置更多內容時, ArrayList類將創建一個更大的數組並復制原始數組中的內容。 放置初始容量通常沒有任何意義。 僅當我從一開始就知道要在ArrayList中講述大量元素(比如說一百萬個)時,才使用它。
我知道,這種行為非常令人困惑,特別是如果您來自PHP之類的語言,您可以在其中執行以下操作:
al[] = Array();
al[15] = "I am a fifteen year old UDP package";
基本上add(index, element)
如果您有一個包含多個索引元素的ArrayList,則add(index, element)
方法才起作用,將new元素擠壓在index-1之后 。
對於解決方案:
如果您知道最多將接收15個元素,則可以使用如下所示的普通數組 :
String[] al = new String[15];
al[5] = "Tralala";
如果您不知道元素的數量,我將它們存儲在一個列表中,並在收到所有包后對該列表進行排序。
構造函數接受容量 ,而不是大小 。 您只能以小於或等於ArrayList的大小的索引添加元素,在這種情況下為零。
這是創建具有15個元素的ArrayList的解決方法:
ArrayList<String> al = new ArrayList<String>(Arrays.asList(new String[15]));
ArrayList<String> a = new ArrayList<String>();
int size = a.size();
if(5 < size){
a.add(5,"Hello");
}else{
System.out.println("Index not present as size is less");
}
或者,在創建收藏集時,您可以提及尺寸,例如
ArrayList<String> a = new ArrayList<String>(10);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.