JAVA - 如何创建对象数组?

标签 java arrays class object csv

我需要将 CSV 文件读入对象数组中。 我没有意识到它必须进入其中,而只是制作了一个 ArrayList 。我现在需要解决这个问题,但不知道我在做什么。

这是我将 CSV 文件读入多维数组的代码。

public static void readClub() throws IOException {
        BufferedReader clubBR = new BufferedReader(new FileReader(new File("nrlclubs.txt")));
        String line = "";

        ArrayList<String[]> clubsArr = new ArrayList<String[]>(); 

        while ((line = clubBR.readLine()) != null) { 

            String[] club = new String[3]; 

            for (int i = 0; i < 3; i++) { 
                String[] value = line.split(",", 3);
                club[i] = value[i]; 
            }

            clubsArr.add(club); 
        }

我的 CSV 文件的片段如下:

Glebe,G Shield,Glebe District
Cumberland,C Shield,Central Cumberland
Annandale,A Shield,Annandale District
University,Lion,Sydney Uni Rugby League Club
Souths,Rabbit,South Sydney,Rabbitohs
Easts,Rooster,Eastern Suburbs,Roosters,Sydney Roosters
Balmain,Tiger,Tigers,Balmain Tigers
Newtown,Jets,Jets,Newtown Jets,Bluebags

第一个单词是团队名称,第二个单词是团队吉祥物,其余是别名。

现在的问题是,我如何做同样的事情,但是使用对象数组(在一个名为 Clubs 的类中)? 我只是花了几个小时试图让它工作,结果却被告知它是错误的,而对象数组正在我的头脑中:'(

谢谢!

编辑: 好吧,实际的问题是这样的: 程序应将数据文件 (NRLclubs.txt) 的内容读入内存中的适当对象数组中(有关该类的描述,请参阅上一页)。不要假设该文件存在。

该类的描述如下: 俱乐部类别:俱乐部类别代表比赛中的单个 NRL 俱乐部。 Club 类需要存储当前俱乐部名称、当前俱乐部吉祥物、俱乐部已知或已知的任何别名的数据。除了应该为类创建的普通方法(例如,构造函数、“setters”和“getters”)之外,您还需要根据赋值规范的一般要求来决定该类的适当方法。

最佳答案

创建一个新类来保存一行数据。 在最简单的情况下,您可以创建一个如下所示的类:

class MyClass {
     public String column1;
     public String column2;
     public ArrayList<String> aliases = new ArrayList<String>();

     public void addAliases(String[] a){
        for(int i=2;i<a.length;i++){
           aliases.add(a[i]);
        }
     }
}

然后像这样更改您的 ArrayList:ArrayList<MyClass> clubsArr = new ArrayList<MyClass>();

你的阅读部分如下:

while ((line = clubBR.readLine()) != null) { 

        MyClass club = new MyClass; 

        String[] value = line.split(",", 3);
        club.column1 = value[0]; 
        club.column2 = value[1]; 
        // etc...
        clubsArr.add(club); 

    }
    MyClass[] clubs = clubsArr.toArray();

这样,您稍后就可以使用其中一个对象的属性名称(在本例中为 .column2 )而不是您必须记住的某些索引来从其中获取值。

请注意,您可以根据自己的喜好调用类中的属性(例如 clubname 而不是 column1 )

编辑(帮助编辑 OP) 要检查文件是否存在,请替换该行 BufferedReader clubBR = new BufferedReader(new FileReader(new File("nrlclubs.txt")));

File file = new File("nrlclubs.txt");
if(!file.exists()){
    System.exit(1); // no use to go any further if we have no input
}
BufferedReader clubBR = new BufferedReader(new FileReader(file));

关于JAVA - 如何创建对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16786923/

相关文章:

c++ - 在类中定义数组的方法和字段

java - 为什么不是所有的 Java 类都有接口(interface)?

class - 什么是 D 中的类(class)监视器?

c++ - 将 const char[] 初始化为非静态类成员

java - 使用 Hibernate 在运行时从未知数据库构建对象

java - 如何在 liquibase 变更集中设置多个外键?

java - 使用 java 将两个 JSON 文件合并到同一个文件中

java - 删除所有匹配正则表达式模式的单词

arrays - 为什么heap.Pop与反向数组一起使用?

javascript - 在 Javascript 数组中搜索字符串匹配并输出内容