我有一些方法,在treetableview中搜索。我的问题是关于动态数组:
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 :(得分:1)
使用List的任何实现,例如:ArrayList,LinkedList ...对于java提供的列表,请参阅
https://docs.oracle.com/javase/8/docs/api/java/util/List.html
答案 1 :(得分: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中的任意索引处设置一些东西,直到它通过添加一些数据而增长到大小&gt;索引。
如果您希望将某些内容存储在所需的索引中,而不需要数组的连续性,那么您应该使用:
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
答案 2 :(得分:0)
Java中没有任何称为动态数组的东西。定义数组时,应设置大小。你无法在跑步中改变它。
您必须手动创建一个新数组并将现有元素复制到具有足够可用空间的新数组,或者您可以使用某些集合,如ArrayList,Vector等。