如何在Java中扩展数组而不更改其名称

时间:2010-12-16 16:32:19

标签: java arrays extend

我想知道是否可以在Java中扩展数组但不更改其名称,因为我有多个方法链接到此数组。我正在考虑创建一个名称相同但大两倍的新数组,然后将所有元素从第一个数组复制到第二个数组。这可能吗?
基本上我想在银行创建一个包含帐户的数组,如果客户创建了这么多的数据,那么数组就没有足够的元素,它应该自行扩展。
谢谢你的任何回复!

5 个答案:

答案 0 :(得分:9)

您无法更改所拥有的数组,但可以创建具有所需类型和大小的新数组,将数据从原始数组复制到新创建的数组,然后将其分配给原始数组变量。

但你不应该这样做。

而不是数组使用java.util.List的任何实现。我认为ArrayList对于这种情况来说是个不错的选择。

答案 1 :(得分:9)

即使在许多情况下使用ArrayList可能是一个很好的建议,使用普通旧数组也是完全合理的。

在这种情况下,如果您需要调整阵列大小,可能需要调查其中一种java.utils.Arrays.copyOf方法。请注意,那些不会真正调整阵列的人。它们只会创建一个新数组并复制常用项目。

如果新数组的大小大于旧数组,则新项目将初始化为某个默认值(即falseboolean[]nullT[] - 有关详细信息,请参阅文档。你必须使用这样的功能:

myArray = copyOf(myArray, myNewSize); 

但请记住,此方法将始终返回 new 数组。即使请求的大小与原始大小相同。如果中的这个需要,你将不得不写这样的东西:

myArray = (myNewSize > myArray.length) ? copyOf(myArray, myNewSize) : myArray;

答案 2 :(得分:5)

这是我为Java编程类编写的方法

private static double[] extendArraySize(double [] array){
    double [] temp = array.clone();
    array = new double[array.length + 1];
    System.arraycopy(temp, 0, array, 0, temp.length);
    return array;
}

关于它是如何工作的,这是非常自我解释的,尽管它必须具有使用的方式 分配给方法的数组,其中数组名称作为参数传递,方法的数据类型必须始终是传入的数组类型。

示例:

double [] z = {1,2,3};  //size of z = 3; [0,1,2]   VALUES: [1,2,3]
z = extendArraySize(z); //size of z = 4; [0,1,2,3] VALUES: [1,2,3,0];

很抱歉,如果解释得非常糟糕,我确信有更好的方法可以使用VIA矢量或ArrayLists。但是如果你想要扩展一个原始数组,这是一种方法。

希望我帮助= D

答案 3 :(得分:3)

使用ArrayList,它会为您完成所有这些操作。只需致电add()addAll()即可附加内容。

答案 4 :(得分:0)

  var myApp = angular.module('myApp',[]);

 myApp.controller('MainController', function($scope) {
$scope.title = 'Shopping Items';
$scope.items = [{title: 'Item1', price: 3.95},
                {title: 'Item2', price: 12.95},
                {title: 'Item3', price: 6.95}];
$scope.reset = function($index){

    $scope.qty[index] = "";
}
});