将多个String变量添加到ArrayList

时间:2014-07-23 22:18:41

标签: java string arraylist

假设我有很多字符串变量(例如100):

   String str1 = "abc";
    String str2 = "123";
    String str3 = "aaa";
....
    String str100 = "zzz";

我想将这些String变量添加到ArrayList,我现在正在做的是

    ArrayList<String> list = new ArrayList<String>();
    list.add(str1);
    list.add(str2);
    list.add(str3);
...
    list.add(str100);

我很好奇,有没有办法使用循环?例如。

for(int i =  1; i <= 100; i++){
     list.add(str+i)//something like this?
}

6 个答案:

答案 0 :(得分:12)

使用数组:

String[] strs = { "abc","123","zzz" };

for(int i =  0; i < strs.length; i++){
     list.add(strs[i]);  //something like this?
}

这个想法非常受欢迎,以至于有这样的内置方法可以做到这一点。例如:

  list.addAll( Arrays.asList(strs) );

会将您的数组元素添加到现有列表中。如果您只想要一个只包含数组元素的列表,可以在一行中完成:

  List<String> list = Arrays.asList( strs );

答案 1 :(得分:1)

如果strX是类字段,那么您可以尝试使用反射 - link来访问字段和方法。

如果它是局部变量,那么您无法访问其名称,因此您将无法访问它(除非str为数组,因此您可以通过{{1}访问其值但是你可能不需要str[i])。

<强>更新

更新问题并显示您有100个变量后

ArrayList

我必须说你需要数组。数组软件正好引入编程语言 ,以避免您现在处于 状态。因此,您应该使用

而不是声明100个单独的变量
String str1 = "abc";
String str2 = "123";
String str3 = "aaa";
//...
String str100 = "zzz";

然后通过String[] str = {"abc", "123", "aaa", ... , "zzz"}; 访问值,其中index的值介于str[index]和数组-1的大小之间,在这种情况下,其范围为0 - 0


如果你仍然需要将所有数组元素放到列表中,你可以使用

99

首先

List<String> elements = new ArrayList<>(Arrays.asList(str));

创建由Arrays.asList(str) 数组备份的列表(这意味着如果对数组进行任何更改,它将反映在列表中,反之亦然,从此方法对列表所做的更改将影响{{1} } array)。

为了避免使列表依赖于数组的状态,我们可以创建单独的列表,将先前列表中的元素复制到自己的数组中。我们可以通过使用构造函数

来完成它
str

或者我们可以使用

更多地分离这些步骤
str

答案 2 :(得分:1)

如果您想坚持良好做法,请在数组中声明String

String[] strs = new String[]{ "abc", "123", "aaa", ... };
for (String s : strs) // Goes through all entries of strs in ascending index order (foreach over array)
    list.add(s);

答案 3 :(得分:0)

是。使用循环的方法不是声明100个字符串变量。改为使用一个数组。

String[] str = new String[101];
str[1] = "abc";
str[2] = "123";
str[3] = "aaa";
....
str[100] = "zzz";

(我使索引从1到100显示它与原始代码的对应关系,但从0到99更为正常,并使用@中的数组初始化程序初始化它标记空间的答案。)

答案 4 :(得分:0)

如果您正在使用Java 9,那么您可以轻松地将多个字符串对象添加到数组列表中

del/1

答案 5 :(得分:0)

以下内容根据您拥有的特定ArrayList值创建String

ArrayList<String> list1 = new ArrayList<String>() {{addAll(Arrays.asList(new String[]{"99", "bb", "zz"}));}};

或者,如果只是您想要的一些不同的值,可以使用它来表示-其中10个:

ArrayList<String> list2 = new ArrayList<String>() {{for (int i=0; i<10; i++) add(""+System.currentTimeMillis());}};