簡體   English   中英

arrayList / vector在位置上添加元素,方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM