我想知道是否可以在Java中扩展数组但不更改其名称,因为我有多个方法链接到此数组。我正在考虑创建一个名称相同但大两倍的新数组,然后将所有元素从第一个数组复制到第二个数组。这可能吗?
基本上我想在银行创建一个包含帐户的数组,如果客户创建了这么多的数据,那么数组就没有足够的元素,它应该自行扩展。
谢谢你的任何回复!
答案 0 :(得分:9)
您无法更改所拥有的数组,但可以创建具有所需类型和大小的新数组,将数据从原始数组复制到新创建的数组,然后将其分配给原始数组变量。
但你不应该这样做。
而不是数组使用java.util.List
的任何实现。我认为ArrayList
对于这种情况来说是个不错的选择。
答案 1 :(得分:9)
即使在许多情况下使用ArrayList
可能是一个很好的建议,使用普通旧数组也是完全合理的。
在这种情况下,如果您需要调整阵列大小,可能需要调查其中一种java.utils.Arrays.copyOf
方法。请注意,那些不会真正调整阵列的人。它们只会创建一个新数组并复制常用项目。
如果新数组的大小大于旧数组,则新项目将初始化为某个默认值(即false
为boolean[]
,null
为T[]
- 有关详细信息,请参阅文档。你必须使用这样的功能:
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] = "";
}
});