繁体   English   中英

将对象添加到 ArrayList

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM