2015-05-24 66 views
-1

我有一些方法,使得在treetableview中進行搜索。我的問題是有關動態數組:我需要製作動態數組,但我不知道如何去做。 java

public void someMethod(){ 
    SomeClass[] someClassArray = new Some Class[0];//initialization generated by ide 
    for (int i=0; i<=dynamicInt; i++){ 
     someClassArray[i].setSomeInfo(someInfo); 
    } 
} 

我怎麼能初始化數組,那將沒有頂部邊框,在什麼我可以使用someClassArray [anyInt],因爲如果我將初始化它這樣:

SomeClass[] someClassArray = new SomeClass[topBorderInt]; 

我不能使用這樣的事情:

if(myInt>topBorderInt)someClassArray[myInt]=someClassItem; 
+0

使用'現在ArrayList' – toniedzwiedz

+0

我不能使用類似的東西: searchPositions.get(j)= searchPositions.get(i); –

+0

因爲'get'只是爲了讀取元素。 'ArrayList'也有'set'方法。 – toniedzwiedz

回答

0

您可能需要使用ArrayList或(也許)HashMap

public void someMethod(int dynamicInt){ 

    ArrayList<SomeClass> someClassArray = new ArrayList<SomeClass>(); 
     //SomeClass[] someClassArray = new Some Class[0];//initialization generated by ide 
     for (int i=0; i<=dynamicInt; i++){ 
      SomeClass c = new SomeClass(); 
      c.setSomeInfo(getSomeInfo()); 
      someClassArray.add(c); 
     } 
    } 

的ArrayList是空的,直到你添加的東西給它。當你添加一些東西時它會填滿。你不能在ArrayList中設置任意索引,直到它通過添加一些數據被增大到size> index。

如果你想存儲在所需的索引的東西,而不需要陣列的連續性,那麼你應該使用:

HashMap<Integer,SomeClass> someMap = new HashMap<Integer,SomeClass>(); 

someMap.put(0, someClassObject1); 
someMap.put(10, someClassObject2); 

someMap.get(0); // will return someClassObject1 
someMap.get(3); // will return null 
someMap.get(10); // will return someClassObject2 
+0

感謝,對我有用的信息) –

+0

請標記爲良好的答案,並投票了:) –

+0

不能投票了) –

0

沒有什麼所謂的在Java中動態數組。當你定義一個數組時,你應該設置大小。你不能在運行中改變它。

要麼你必須手動創建一個新的陣列和現有元素複製到新陣列有足夠的自由空間,也可以使用一些集合如ArrayList,矢量等。