将多个String变量添加到ArrayList

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

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

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

  ArrayList list = new ArrayList(); 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? } 

使用数组:

 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 list = Arrays.asList( strs ); 

如果strX是类字段,那么您可以尝试使用reflection – 链接到访问字段和方法的示例。

如果它是局部变量,那么你就无法访问它的名字,所以你将无法做到这一点(除非str是数组,所以你可以通过str[i]访问它的值但是你可能不需要ArrayList )。

更新:

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

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

我必须说你需要arrays 。 数组软件精确地引入编程语言, 以避免您现在所处的情况 。 因此,您应该使用而不是声明100个单独的变量

 String[] str = {"abc", "123", "aaa", ... , "zzz"}; 

然后通过str[index]访问值,其中index的值介于0和数组-1的大小之间,在大多数情况下为099


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

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

哪个会先

 Arrays.asList(str) 

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

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

 new ArrayList<>(Arrays.asList(str)); 

或者我们可以将这些步骤更多地分开

 List elements = new ArrayList<>();//empty list elements.addAll(Arrays.asList(str));//copy all elements from one list to another 

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

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

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

如果你想坚持良好的做法,请在一个数组中声明你的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); 

如果您正在使用Java 9,那么您可以轻松地将多个String对象添加到Array List Like中

 List strings = List.of("abc","123","zzz");