Java数组为保留初始数组赋值多个值

时间:2016-06-29 09:45:14

标签: java arrays

Java中是否有一种方法可以在一个语句中为数组分配多个值 那么以后你仍然可以追加到同一个数组中的其他值吗?

e.g。已经定义了长度为4的String数组

String[] kids = new String[4];

我想在一个语句中为数组分配多个值(例如2个值);也许是接近数组init的东西

kids = {"X", "Y"};

或数组重新定义

kids = new String[] {"X", "Y"};

但是如果没有丢失初始数组,我将需要添加其他值,例如。

if(newKid) {
    kids[3] = "Z";
}

或者没有办法实现这一点,必须逐个分配值

kids[0] = "X";
kids[1] = "Y";
if(newKid) {
    kids[3] = "Z";
}

3 个答案:

答案 0 :(得分:1)

您需要将包含初始化值的数组复制到更大的数组中:

String[] kids = Arrays.copyOf(new String[]{ "x", "y" }, 4);
kids[2] = "z";

替代复制解决方案:

String[] kids = new String[4];
System.arraycopy(new String[]{"x", "y"}, 0, kids, 0, 2);
kids[2] = "z";

或者,您可以将空字符串作为占位符:

String[] test ={ "x", "y", "", "" };
test[2] = "z";

或者您可以使用List<String>

List<String> kids = new ArrayList<>(4);
Collections.addAll(kids, "x", "y");
kids.add("z");

替代List<String>解决方案:

List<String> kids = new ArrayList<>(Arrays.asList("x", "y"));
kids.add("z");

答案 1 :(得分:0)

这里解决了 Resize an Array while keeping current elements in Java?

顺便说一句,您可以使用列表,因此您不需要调整大小

答案 2 :(得分:0)

您可以执行以下操作:

String[] kids = new String[4];
System.arraycopy(new String[] {"X", "Y"}, 0, kids, 0, 2);