Java动态数组大小?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (75)

我有一个类-xClass,我想将它加载到xClass的数组中,所以我要声明:

xClass mysclass[] = new xClass[10];
myclass[0] = new xClass();
myclass[9] = new xClass();

我可以动态更改数组中元素的数量吗?

提问于
用户回答回答于

分配一个新的数据并将数据从旧的复制到新的:

int oldItems[] = new int[10];
for (int i=0; i<10; i++) {
  oldItems[i] = i+10;
}
int newItems[] = new int[20];
System.arraycopy(oldItems, 0, newItems, 0, 10);
oldItems = newItems;

封装一个数组,并根据需要处理扩展数组的逻辑:

List<xClass> mysclass = new ArrayList<xClass>();
myclass.add(new xClass());
myclass.add(new xClass());

一般ArrayList是数组的一个更好的解决方案

class Myclass {
  private int items[];

  public int[] getItems() { return items; }
}

将其与列表版本进行比较:

class Myclass {
  private List<Integer> items;

  public List<Integer> getItems() { return Collections.unmodifiableList(items); }
}
用户回答回答于

在java数组中,长度是固定的。

可以使用列表保存值并调用toArray方法、参见以下示例:

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

public class A  {

    public static void main( String [] args ) {
        // dynamically hold the instances
        List<xClass> list = new ArrayList<xClass>();

        // fill it with a random number between 0 and 100
        int elements = new Random().nextInt(100);  
        for( int i = 0 ; i < elements ; i++ ) {
            list.add( new xClass() );
        }

        // convert it to array
        xClass [] array = list.toArray( new xClass[ list.size() ] );


        System.out.println( "size of array = " + array.length );
    }
}
class xClass {}

扫码关注云+社区

领取腾讯云代金券