2014-02-19 132 views
0

如果我使用list.add(int, int)方法,如果位置大於或等於list.size(),它將拋出IndexOutBoundException動態增加列表大小java

我想通過添加空元素(如果有必要)來增加大小,直到它可以安全地添加一個真實元素爲止。

所以可以說我有一個list(list.size()= 0),我想5添加到第三的位置,那麼我會得到的,其中size等於4列表,元素是nullnullnull5

+0

ensureCapacity(int minCapacity)方法是什麼ü意味着'afely添加真元的end'? –

+1

只是出於好奇..你爲什麼想這樣做? – TheLostMind

+0

問題沒有意義,除非你告訴我們你的'list'實際上是什麼。 –

回答

0

嘗試使用的ArrayList

+1

沒辦法。這是完全不同的 –

+1

'ensureCapacity(int)'不會更改列表的實際大小,它只是爲列表在下一個需要複製值之前可以達到的特定大小分配內存。它只是節省增量重新分配。而且,它是一個'ArrayList'方法,不適用於'java.util.List'的任何其他實現。 –

+0

我的不好:(。與方法描述混淆了:_如果有必要,增加此ArrayList實例的容量,以確保它至少可容納由最小容量參數指定的元素數量 – Zeeshan

0
You can do this by adding null elements in the List like: 


     import java util.List; 
     import java.util.ArrayList; 

     public class Hello { 
     public static void main(String args[]){ 
     List<Integer> list = new ArrayList<Integer>(); 
     list.add(0, null); 
     list.add(1, null); 
     list.add(2, null); 
     list.add(3, 5); 

     System.out.println(list); 
     } 
     } 

Now, you will an output [null, null, null, 5]. I think this might serve your purpose. 

Or you can use this way: 

List list = Collections.nCopies(5,null); 
ArrayList<Integer> aList = new ArrayList<Integer>(list); 
aList.add(5,5); 
System.out.println(aList); 

You will get an output as : [null, null, null, null, null, 5] 

If this could serve your prupose. 
+0

是的,我可以做到這一點,但這正是我想要避免的,並找到一個更優雅的開箱即用的解決方案。 –

+0

實際上,ArrayList類使用RangeCheck(int index),它是私有的,它檢查索引的大小,並在索引時返回異常> size。因此,不可能將值直接添加到索引3,而沒有0,1和2中的值。 – Sambhav

+0

您可以使用循環在所需索引之前添加空值 – Sambhav