尝试向数组中的对象添加信息

时间:2019-10-14 12:27:48

标签: java arrays

所以,伙计们只是做一个分配,然后尝试将名称,课程和ID添加到数组中,并寻找一种比我目前更干净的方法。我目前所做的事情达到了我想要的目标,但我确信他们是一种更干净的方法,好像我要做100件事将永远需要

    students[0].setName("John Doe");
    students[1].setName("Jane Doe");
    students[2].setName("John Smith");

    students[0].setCourse("2BA");
    students[1].setCourse("2BA");
    students[2].setCourse("2BSc");

    students[0].setID(44444444);
    students[1].setID(23333333);
    students[2].setID(22222222);

3 个答案:

答案 0 :(得分:0)

关于每个数组条目后面的基础对象的信息不足,但是您可以使用构造函数参数将它们创建为单行。

class MyArrayObject {
    private String name;
    private String course;
    private long id;

    public MyArrayObject(String name, String course, long id) {
        this.name = name;
        this.course = course;
        this.id = id;
    }
}

...然后像这样填充数组

students[0] = new MyArrayObject("John Doe", "2BA", 444444);
students[1] = new MyArrayObject("Jane Doe", "2BA", 445566);
students[2] = new MyArrayObject("John Smith", "2BSc", 442200);

它仍然是意大利面条代码,但是更少。

为了给您一个更好的答案,我们需要有关该对象的更多信息,它来自何处,您拥有什么数据源,为什么仍然使用这样的硬编码值。

答案 1 :(得分:0)

像在这里一样,Real Applications永远不会以硬编码方式获取业务价值。它们通常接受来自用户输入,DB或某些其他系统的值,并使用循环来处理集合和基于数组的数据结构。 如果要填充单元测试用例的数据,则可以选择使用Student类构造函数。

答案 2 :(得分:0)

您可以使用包含数据的文件。您可以选择任何格式(XML,JSON,CSV等)。 假设您选择了CSV,这是表示数据的最简单格式之一。 CSV的每一行都包含:

名称,课程,ID

编写一些代码以逐行将文件读取为字符串。然后,对于每一行(每个字符串),您可以执行以下操作:

String [] studentsStr = line.split(',');

然后您的数组将在索引处包含3个字符串:

1:姓名2:课程3:ID

由于您的CSV文件可能包含不确定大小的学生,因此您可以使用ArraList。

声明数组列表

List<Student> studentL = new ArrayList<>();

对于CSV文本文件上的每一行:

Student std = new Student();
std.setName(studentsStr[0]);
std.setCourse(studentsStr[1]);
std.setID(studentsStr[2]);
studentL.add(std);

然后,您可以在CSV中添加任意数量的学生而无需更改代码。