Java:将CSV读取到链接列表(有一个扭曲)

时间:2015-04-17 10:24:36

标签: java database csv linked-list

我是编程的新手,我自己从Core Java学习Java。

本书提到了几行关于在Java中读取csv文件并将其内容存储到data-structure中的内容。

因此,在浏览互联网时,我遇到了以下问题:

  
      
  • 有一所学校有以下演员:教职员工和学生
  •   
  • 教师具有以下属性:姓名,电话号码,电子邮件ID地址,部门,研究论文数
  •   
  • 学生具有以下属性:姓名,电话号码,电子邮件ID,地址,卷号,GPA
  •   
  • 员工具有以下属性:姓名,电话号码,电子邮件ID,地址,部门,薪资

  •   
  • 现在,所有这些数据都以下列方式存储在单个csv文件中:

  •   
Student,Harry Potter,9999999,hp@hogwarts.magic,Hogsmeade Street,1,4.0

Staff,Argus Filch,888888,arg@mrsnorris.com,Hogwarts,Cleaning,5000

Faculty,Snape,555555,snape@snivellus.com,Hogwarts,Potions,40000

.
.
.
.
  
      
  • 现在,我需要用Java读取cs文件中的数据,并按照以下顺序将其存储到链接列表中:教师记录,然后是员工记录,然后是学生记录 < / LI>   

我的代码:

到目前为止我写的代码是:

import java.io.*;
import java.util.*;

public class readCSV {
  public static void main(String[] args) throws FileNotFoundException
  {

    Scanner scanner = new Scanner(new File("CSV.csv"));
    scanner.useDelimiter(",");


    while (scanner.hasNext())
    {
        // Read the tokens and store them into a Linked List 
    }


    scanner.close();
  }
}

我的问题:

有人可以帮帮我吗?我不想使用任何库来解析csv,也想从头开始创建我自己的链表 - 这将是一个很好的做法

My main problem is to read from csv and store the data into a linked list . An illustrative code snippet would go a long way

免责声明:这不是一个家庭作业问题。我是自学Java

2 个答案:

答案 0 :(得分:1)

对于链接列表,我建议阅读Robert Sedgewick的算法书籍之一。 (如果a)你知道一些Java,那么实现链表本身并不会太难.b)你知道链表如何工作。)我希望网上有很多例子。

编写了自己的链表实现(用于学习):扔掉它并且不在实际程序中使用它。认真。现有的库实现会更好;编写真实世界的馆藏图书馆是一项艰巨的任务。

如果您的数据(文本)可以包含 CSV分隔符的逗号和引号(在实际数据中通常是这样),则解析CSV比声音更复杂。

然而,一个天真的实现可能是:

  • 使用LineNumberReader
  • 打开文件
  • 在循环中调用readLine(),直到您返回null(不再有行)。
  • 使用line.split(",")分割读取的每一行。
  • 处理每一行的字段。

答案 1 :(得分:0)

您可以使用以下内容解析文件:

Scanner scanner = new Scanner(new File("CSV.csv"));
while (scanner.hasNextLine()) {
    String line = scanner.nextLine();
    if (line.isEmpty()) {
        continue;
    }
    String[] parts = line.split(",");
    String name = parts[1];
    String number = parts[2];
    String email = parts[3];
    String address = parts[4];
    switch (parts[0]) {
    case "Faculty":
        String department = parts[5];
        String papers = parts[6];
        // add to list
        break;
    case "Student":
        String roll = parts[5];
        String gpa = parts[6];
        // add to list
        break;
    case "Staff":
        String department = parts[5];
        String salary = parts[6];
        // add to list
        break;
    }
}