Java:将CSV读取到链表(带有扭曲)
我是一个编程新手,自己也在学习Java 这本书提到了几行关于在Java中读取Java:将CSV读取到链表(带有扭曲),java,database,csv,linked-list,Java,Database,Csv,Linked List,我是一个编程新手,自己也在学习Java 这本书提到了几行关于在Java中读取csv文件并将其内容存储到数据结构中的内容 因此,在浏览互联网时,我遇到了以下问题: 有一所学校有以下人员:教员、教职员和学生 教员具有以下属性:姓名、电话号码、电子邮件ID地址、系、研究论文数量 学生具有以下属性:姓名、电话号码、电子邮件ID、地址、卷号、GPA 员工具有以下属性:姓名、电话号码、电子邮件ID、地址、部门、工资 现在,所有这些数据都以以下方式存储在单个csv文件中: 现在,我需要用Jav
csv
文件并将其内容存储到数据结构中的内容
因此,在浏览互联网时,我遇到了以下问题:
- 有一所学校有以下人员:教员、教职员和学生
- 教员具有以下属性:姓名、电话号码、电子邮件ID地址、系、研究论文数量
- 学生具有以下属性:姓名、电话号码、电子邮件ID、地址、卷号、GPA
- 员工具有以下属性:姓名、电话号码、电子邮件ID、地址、部门、工资
- 现在,所有这些数据都以以下方式存储在单个
csv
文件中:
- 现在,我需要用Java从cs文件中读取数据,并按如下顺序将其存储到一个链表中:教员记录,职员记录,学生记录
我的代码:
到目前为止,我编写的代码是:
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,还想从头开始创建自己的链表——这将是一个很好的实践
我的主要问题是从csv中读取数据并将其存储到链接列表中。一个说明性的代码片段将大有帮助
免责声明:这不是家庭作业问题。我正在自学Java对于链表,我建议读一本Robert Sedgewick的算法书。(如果a)你懂一些Java,b)你知道链表是如何工作的,那么实现链表本身就不会太难了。)我希望网络上也有很多例子
编写了自己的链表实现(用于学习):扔掉它,不要在实际程序中使用它。认真地现有的库实现将会更好;编写真实世界的馆藏是一项严肃的任务
如果您的数据(文本)可以包含逗号和引号,而这些逗号和引号不是CSV分隔符(在实际数据中通常是这样),则解析CSV比解析声音更复杂
然而,一个简单的实现可能是:
- 使用
LineNumberReader
打开文件
- 在循环中调用
readLine()
,直到返回null(不再有行)
- 用
行拆分读取的每一行。拆分(“,”
)
- 处理每行的字段
您可以使用以下内容解析文件:
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;
}
}
那么问题是什么呢?如何制作链表?通过创建自己的链表,您的意思是您不想使用java.util.list..?顺便说一句。你发现的问题包括一些糟糕的设计,但在问题的前面。一个合理的实现可能不会通过将教员/学生/员工的(单独的)概念都存储在同一个CSV文件中而将它们混为一谈。首先,根据行的“类型”,输入数据中的“列”表示不同的内容。嗨@Bubletan,我的主要问题是从csv读取数据并将数据存储到链接列表中。一个说明性的代码片段会有很大的帮助…@All,为什么要投反对票?如果需要,我可以增加说明……您还应该问问自己,为什么您想要一个链接列表,而不是其他类型的列表实现。(我不认为链表是我的第一选择,就你正在尝试做的事情而言。)嗨@Paul,我的主要问题是从csv读取数据并将数据存储到链表中。一个说明性的代码片段将大有帮助。。。提前感谢:)
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;
}
}