2011-11-19 56 views
0

當我在Java中創建一個數組 - int數組[]和數組=新INT [一定數量] -Java的固定數組中的元素數量

我如何構建它,如果我不知道有多少它會保持的值,以便我有足夠的空間?

+10

在這種情況下不使用數組,而是一個ArrayList。 –

+1

實際上:如果有疑問,從來不使用數組,但默認ArrayList –

回答

0

對於成長陣列,使用ArrayList

如果數組應包含的基本類型,你可以用它們:

ArrayList<Integer> array = new ArrayList<Integer>(); 

array.add(new Integer(4)); 
array.add(new Integer(-5)); 
array.add(new Integer(4)); 
array.add(new Integer(2)); 

然而,當值發生很大的變化,你保持實例化和扔掉的Integer實例,因爲它是不可變的。這也不是很高的性能。

我的解決方案:自己創建一個包裝器,並帶有公共值域。

這是我的包裝,它也適用於TreeMap等,它們按自然順序對項目進行排序。現在

public class MyInteger implements Comparable<MyInteger> 
{ 
    public int value; 

    public MyInteger(int value) 
    { 
     this.value = value; 
    } 

    @Override 
    public String toString() 
    { 
     return Integer.toString(value); 
    } 

    @Override 
    public int compareTo(MyInteger o) 
    { 
     return value - o.value; 
    } 
} 

你可以做的東西,如:

array.get(2).value++; 
10

在這種情況下,您可能需要使用ArrayList或其他動態集合。 您不必提及ArrayList的大小,並且您可以在運行時添加儘可能多的元素。大小會動態增長。

宣言

List arrayList = new ArrayList(); 

如果使用JDK 1.5或更高版本,那麼你還可以提及的元素,這個名單將持有的類型。

List<String> arrayList = new ArrayList<String>(); 

http://www.roseindia.net/java/beginners/array_list_demo.shtml

0

的ArrayList是最簡單的答案,但是如果你想要更多的內存有效的方法,你可以使用TIntArrayList(其中封裝了int[]

+0

我的Java 1.6中沒有TIntArrayList JDK –

+0

如果有其他庫可用,您可以搜索它。 ;) –