2009-08-24 45 views
2

我想要做的INTS的簡單的動態數組在我的J2ME應用程序的整數動態數組,在J2ME

唯一的動態數組我看到的是「java.util.Vector中的」這一個似乎沒有不接受一個int作爲一個新的元素(只需要對象)。

那麼我該如何解決這個問題呢?

回答

5
public class DynamicIntArray 
{ 
    private static final int CAPACITY_INCREMENT = 10; 
    private static final int INITIAL_CAPACITY = 10; 

    private final int capacityIncrement; 

    public int length = 0; 
    public int[] array; 

    public DynamicIntArray(int initialCapacity, int capacityIncrement) 
    { 
     this.capacityIncrement = capacityIncrement; 
     this.array = new int[initialCapacity]; 
    } 

    public DynamicIntArray() 
    { 
     this(CAPACITY_INCREMENT, INITIAL_CAPACITY); 
    } 

    public int append(int i) 
    { 
     final int offset = length; 
     if (offset == array.length) 
     { 
      int[] old = array; 
      array = new int[offset + capacityIncrement]; 
      System.arraycopy(old, 0, array, 0, offset); 
     } 
     array[length++] = i; 
     return offset; 
    } 


    public void removeElementAt(int offset) 
    { 
     if (offset >= length) 
     { 
      throw new ArrayIndexOutOfBoundsException("offset too big"); 
     } 

     if (offset < length) 
     { 
      System.arraycopy(array, offset+1, array, offset, length-offset-1); 
      length--; 
     } 
    } 
} 

不有setAt()方法,但我敢肯定你的想法。

+1

我猜DEFAULT_CAPACITY_INCREMENT,DEFAULT_INITIAL_CAPACITY不應該有DEFAULT_前綴? – Lukasz 2011-04-27 13:09:03

+0

很好看,謝謝。 – izb 2011-04-27 14:52:52

6

您需要在Integer中填充int。

v.addElement(new Integer(1)); 
+0

我結束了使用,問題是,我發現提取值的最佳方式是「((Integer)(v.elementAt(index)))。intValue()」。它是一個Java的東西或什麼? – kkaploon 2009-08-25 17:30:58

+0

使用泛型。 Vector v = Vector (); Integer i = v.elementAt(index); – 2009-08-26 10:07:31

+0

你可以使用泛型來輸入你的Vector,然後你不會用elementAt返回Objects,而是使用Inegers。試試: Vector v = new Vector (); v.elementAt(index) Autoboxing會將Integer轉換爲一個int值,不需要使用intValue。 – 2009-08-26 10:07:40