[英]Add objects to ArrayList
是否可以通过 for 循环将对象添加到 Arraylist 中?
我想缩短代码! 或者您对如何使用不同的类和方法创建单词测验有任何其他提示吗?
我有三个类,驱动游戏的Main
,构建游戏的Quiz
,以及一个包含所有单词的字典类。
ArrayList<Sweng> Wordlist = new ArrayList<Sweng>();
Sweng s1 = new Sweng("bil", "car");
Sweng s2 = new Sweng("blå", "blue");
Sweng s3 = new Sweng("baka", "bake");
Sweng s4 = new Sweng("hoppa", "jump");
Sweng s5 = new Sweng("simma", "swim");
Sweng s6 = new Sweng("måne", "moon");
Sweng s7 = new Sweng("väg", "road");
Sweng s8 = new Sweng("snäll", "kind");
Sweng s9 = new Sweng("springa", "run");
Sweng s10 = new Sweng("hus", "house");
Wordlist.add(s1);
Wordlist.add(s2);
Wordlist.add(s3);
Wordlist.add(s4);
Wordlist.add(s5);
Wordlist.add(s6);
Wordlist.add(s7);
Wordlist.add(s8);
Wordlist.add(s9);
Wordlist.add(s10);
您可以定义两个不同的字符串数组,每个数组都包含 Object 类的每个字段的字符串数据:
String [] array1 = {"bil", "blå", "baka", "hoppa", ... };
String [] array2 = {"car", "blue", "bake", "jump", ... };
然后将对象添加到Wordlist
,如下所示:
ArrayList<Sweng> Wordlist = new ArrayList<Sweng>();
for (int i=0; i<array1.length; i++)
Wordlist.add(new Sweng(array1[i], array2[i]));
不过,这是一个如何使用 java 流执行此操作的示例,鉴于您目前的 java 水平,我不建议您使用此答案,除非您是专业的,因为它有点高级。
import java.util.Arrays;
import static java.util.stream.Collectors.toList;
import java.util.List;
class Sweng {
Sweng(String a, String b) {}
}
public class Main{
public static void main(String[] args){
List<Sweng> swengs = Arrays.stream(new String [][]{
{"bil", "car"},
{"blå", "blue"},
...
}).map(t -> new Sweng(t[0], t[1])).collect(toList());
}
}
您可以将新元素添加到省略号为 ('...') 的列表中,并且可以是任意长度。
不使用 for 循环,但这可能对您有所帮助。
ArrayList<Sweng> Wordlist = new ArrayList<Sweng>();
Wordlist.add(new Sweng("bil", "car"));
Wordlist.add(new Sweng("blå", "blue"));
Wordlist.add(new Sweng("baka", "bake"));
Wordlist.add(new Sweng("hoppa", "jump"));
Wordlist.add(new Sweng("simma", "swim"));
Wordlist.add(new Sweng("måne", "moon"));
Wordlist.add(new Sweng("väg", "road"));
Wordlist.add(new Sweng("snäll", "kind"));
Wordlist.add(new Sweng("springa", "run"));
Wordlist.add(new Sweng("hus", "house"));
让我们重新考虑并考虑您的要求。
当然,可以收缩和缩短实例化的几行并添加代码本身,即:
Sweng s1 = new Sweng("whatever..", "whatever..");
...
Sweng sk = new Sweng("whatever..", "whatever..");
instance.add(s1);
...
instance.add(sk);
但请稍等……并密切注意如何实例化稍后添加到列表中的对象。
这些数据来自哪里? 任何系统的阅读过程?
不。
你只是硬编码了你想到的(或在你的任务中被问到的)任何东西,世界上的任何程序都无法猜测这些数据应该是什么。
或者,您可以创建一个简单的文本文件,并在其中写入您的数据,并使用一些常规格式(比如说,一行一个条目)。 然后,果然,您可以读取该文件并填充相应的对象 - 因此,将它们添加到您的列表中 - 只需一个简单的循环结构。
片段 1
List<Sweng> Wordlist = Arrays.asList(
new Sweng("bil", "car"),
new Sweng("blå", "blue"),
new Sweng("baka", "bake"),
new Sweng("hoppa", "jump"),
new Sweng("simma", "swim")
new Sweng("måne", "moon")
new Sweng("väg", "road")
new Sweng("snäll", "kind")
new Sweng("springa", "run")
new Sweng("hus", "house")
);
片段 2
List<Sweng> Wordlist = List.of(
new Sweng("bil", "car"),
// ...
);
代码段 3(反模式) 双括号初始化
List<Sweng> list = new ArrayList<Sweng>() {{
add(new Sweng("bil", "car"));
// ...
}};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.