Java 重复向ArrayList添加数据

Java 重复向ArrayList添加数据,java,string,arraylist,Java,String,Arraylist,我正在尝试向ArrayList添加100个(实际上更多)字符串。我如何使用类似for循环的方法一次性添加字符串,而不是单独添加每个字符串。下面的代码是一个示例 ArrayList<String> strings = new ArrayList(); String s1 = "Apple"; String s2 = "Banana"; String s3 = "Pear" /* More Strings created until the 100th String

我正在尝试向ArrayList添加100个(实际上更多)字符串。我如何使用类似for循环的方法一次性添加字符串,而不是单独添加每个字符串。下面的代码是一个示例

ArrayList<String> strings = new ArrayList();

String s1 = "Apple";
String s2 = "Banana";
String s3 = "Pear"

/*
    More Strings created until the 100th String
    .
    .
    .

*/

String s100 = "Kiwi";

//for loop to try add each String to List
for(int i=0; i<100; i++)
{
    //Code to add each String to the arraylist
}
ArrayList strings=new ArrayList();
字符串s1=“苹果”;
字符串s2=“香蕉”;
字符串s3=“Pear”
/*
创建更多字符串,直到第100个字符串
.
.
.
*/
字符串s100=“猕猴桃”;
//for循环尝试将每个字符串添加到列表中

对于(int i=0;i根据您的注释,您正在处理自定义对象。无论您希望如何将数据从对象传输到
ArrayList
,最好使用集合。集合的类型将取决于对象数据的源。由于数据是硬编码的,您可以使用数组。类似于这些的多个变量>
String s1 = "Apple";
String s2 = "Banana";
String s3 = "Pear"
变成

String[] fruitArray = {
   "Apple",
   "Banana",
   "Pear"
   ...
};
然后添加:

for (String fruit: fruitArray) {
   strings.add(fruit);
}

如上所述,更简洁的设计是使用一个
列表
来包含方法中的所有对象,并根据需要提取一个
字符串。

好吧,您可以创建一个复杂的策略,使用反射来获取给定类的所有变量并将它们添加到列表中;随后,您可以循环这个列表,做你想做的任何事情

然而,我认为这并不能解决你的问题。事实上,你可能会遇到几个陷阱

我会改变你解决这个问题的方法。创建一个静态列表,然后添加你需要的任何东西(或者一个单例,这取决于你想如何管理这个列表)。一旦你有了对象列表,你就可以循环它


干杯,

为什么要使用单独的
String
变量?为什么不直接添加到
ArrayList
?老实说,我不是在处理String,我是在使用我创建的对象,然后将它们添加到object类型的ArrayList(这是我创建的一个类)因此,如果我知道如何将字符串单独添加到列表中,那么我可以将其应用到对象中。谢谢如果您试图找到像PHP的eval函数这样的简单解决方案,如
$s1='test';echo eval(\$s1;“”)
这是不会发生的。你不能使用变量的名称作为字符串来调用变量。除非你确定字符串数据的确切来源,否则很难说。如果它们只是常量,那么也许可以将它们放在一个数组中并在数组中迭代,逐个添加。你可以创建一个枚举,然后在枚举中迭代并添加它们单独读取。如果从文件中读取,则读取每个字符串并将其添加到数组列表中。从数据库中,获取每个记录,并将其添加到获取循环中。数据实际上是硬编码的。事实上,我有一个针对各个变量的类,到目前为止,它们被单独添加到列表中(这很烦人)。也没有常量。我可以使用enum,但我认为这可能会使问题复杂化。感谢ReplyTanks的回复。这似乎没问题,但我没有包含数据的列表(如MyObject)。因此我无法将其传输到另一个列表(字符串)。有没有办法使用索引(如“I”)可以与for循环中的“s”连接,然后将“s1”、“s2”等添加到列表中(字符串)再次感谢是的,还有很多超过100个。因此,快速将它们添加到列表中会很好。好的,谢谢。使用数组会容易得多。我知道该怎么做了。非常感谢您的帮助。是的,我同意@Reimeus。反射是一个很麻烦的话题,如果您可以更改代码,那会容易得多。为r干杯是的,这是一个很好的问题。我会仔细思考并解决它。谢谢again@DouglasGrealis,在您开始使用反射之前,这只是一个问题。这些是局部变量吗?如果是,您需要在运行时使用它;因此,这会让您非常头疼。如果不是,那么您可以通过反射轻松地使用类成员。是的,t这里是在一个方法中定义的。在运行时使用它是什么意思?事实上,我从来没有使用过反射。谢谢局部变量(方法中的变量)无法通过反射获取,它们在运行时由主线程加载;因此,需要线程转储来获取这些变量。这是一个复杂的主题,我不建议这样做,除非您无法修改代码(如在第三方提供程序中)。您提到这些值是硬编码的……因此我建议:(1)在枚举中添加所有内容,并使用getEnumConstants()或values();(2)在列表中添加所有内容并循环它。好的,我明白了。谢谢你的建议。如果我使用了索引(如“I”),我是如何处理的这可能会在for循环中与say's'连接起来,然后添加像's1','s2'等将每个字符串添加到列表中。但我认为这是不可能的。我将查看enum的tho。谢谢