2012-12-31 184 views
55

可能重复:
how to add new elements to a String[] array?添加字符串,字符串数组

我在Java中新的,所以我需要一些帮助

String [] scripts = new String [] ("test3","test4","test5"); 

和我想添加新的条款为例子

String string1= " test1" 
String string2 = "test2" 

我要添加新的字符串不是在init但在以后的阶段

我该怎么办呢GS(字符串1,字符串)该阵列(脚本)?

+2

您可以用'List'(如'ArrayList')?或者你可以创建一个更大尺寸的新数组,然后在索引= 2的旧数组中添加循环。然后在索引'0'和'1'处添加新元素。 – Nishant

+1

所以你不是新手,所以在发布问题之前先做一些搜索以避免downvote。 – vels4j

+0

如果需要动态修改元素,请转至java.util.Collections。映射需求和可用的集合类型。如上所述,正如所有的建议,'ArrayList'是最好的。 – VinayVeluri

回答

87

你不能在java中调整数组大小。

一旦声明了数组的大小,它仍然是固定的。

相反,您可以使用具有动态大小的ArrayList,这意味着您无需担心其大小。如果你的数组列表不够大以容纳新值,那么它将自动调整大小。

ArrayList<String> ar = new ArrayList<String>(); 
String s1 ="Test1"; 
String s2 ="Test2"; 
String s3 ="Test3"; 
ar.add(s1); 
ar.add(s2); 
ar.add(s3); 

String s4 ="Test4"; 
ar.add(s4); 
+0

请确保同时导入java.util.ArrayList – wizlog

12

首先,这里的代码,

string [] scripts = new String [] ("test3","test4","test5"); 

应该

String[] scripts = new String [] {"test3","test4","test5"}; 

请阅读本教程Arrays

其次,

阵列固定SIZ e,所以你不能在上面的数组中添加新的字符串。你可以覆盖现有值

scripts[0] = string1; 

(或)

创建与大小的数组,然后继续添加元素,直到它已满。

如果您想要可调整大小的阵列,请考虑使用ArrayList

6

你将不得不写了一些方法来创建一个临时数组,然后复制它像

public String[] increaseArray(String[] theArray, int increaseBy) 
{ 
    int i = theArray.length; 
    int n = ++i; 
    String[] newArray = new String[n]; 
    for(int cnt=0;cnt<theArray.length;cnt++) 
    { 
     newArray[cnt] = theArray[cnt]; 
    } 
    return newArray; 
} 

或将的ArrayList将有助于解决您的问题。

+1

+1好。也可以使用System.arrayCopy – vels4j

+0

您可以使用Arrays.copyOf()来实现相同。 –

2

由于Java数组拥有固定数量的值,所以在这种情况下,您需要创建一个长度为5的新数组。一个更好的解决方案是使用一个ArrayList和简单地字符串到阵列。

实施例:

ArrayList<String> scripts = new ArrayList<String>(); 
scripts.add("test3"); 
scripts.add("test4"); 
scripts.add("test5"); 

// Then later you can add more Strings to the ArrayList 
scripts.add("test1"); 
scripts.add("test2"); 
6

由于许多答案提示更好的解决方案之一是使用ArrayList。 ArrayList大小不固定,易于管理。

它是List接口的可调整大小的实现。实现所有可选的列表操作,并允许所有元素,包括null。除了实现List接口之外,该类还提供了一些方法来控制用于内部存储列表的数组大小。

每个ArrayList实例都有一个容量。容量是用于存储列表中元素的数组大小。它总是至少与列表大小一样大。随着元素被添加到ArrayList,其容量会自动增长。

请注意,此实现不同步。

ArrayList<String> scripts = new ArrayList<String>(); 
scripts.add("test1"); 
scripts.add("test2"); 
scripts.add("test3");