gpt4 book ai didi

java - 从CSV文件中读取数据,用Java进行比较和显示

转载 作者:行者123 更新时间:2023-12-02 05:44:41 24 4
gpt4 key购买 nike

我有 3 个 csv 文件,如下所示:

  • 包含以下列的作者文件:emailID |名字 |姓氏
  • 书籍文件包含以下列:标题|书号 |作者电子邮件 |描述
  • 带有文件栏的杂志:标题|书号 |作者电子邮件 |发布

我需要显示:

  1. 根据ISBN显示所有书籍和杂志
  2. 作者所著的所有书籍和杂志
  3. 所有书籍和杂志按标题

我现在正在使用 BufferedReader:

String csvFileToRead = "csvFiles/authors.csv";    
BufferedReader br = null;
String line = "";
String splitBy = ";";
try {

br = new BufferedReader(new FileReader(csvFileToRead));
while ((line = br.readLine()) != null) {

String[] book = line.split(splitBy);
System.out.println("BOOKS [Email Address= " + book[0] + " , firstname="
+ book[1] + " , lastname=" + book[2] + "]");

}
}

我对如何处理多个文件感到困惑。以下是我考虑过的方法:

  1. 更改

    String csvFileToRead 

    到字符串数组

    String[] csvFileToRead = {"data/authors.csv", "data/books.csv", "data/magazines.csv"}; 

    然后每次将每个索引传递给返回所有行的方法,但仍无法使用 DS。我认为 ArrayList 不够,因为我需要分离的数据。

    • 我应该使用二维数组吗?
    • 我是否需要在 DS 中读取和存储数据才能实现目标?
  2. 我应该为作者、书籍和杂志创建 3 个不同的带有 getter 和 setter 的类吗?

执行此操作的理想方法是什么?请建议。

最佳答案

我会创建 3 List<String[]>每个都包含来自一个 CSV 文件的矩阵,其方法如下:

public List<string[]> csvToList(String csvFileToRead){
BufferedReader br = null;
String line = "";
String splitBy = ";";
try {

br = new BufferedReader(new FileReader(csvFileToRead));

List<string[]> list_csv = new ArrayList<string[]>();
while ((line = br.readLine()) != null) {

String[] book = line.split(splitBy);
authors.add(book);
}
catch(Exception ex) {}

return list_csv;
}

之后您可以将其用作:

List<String[]> authors = csvToList("csvFiles/authors.csv");
List<String[]> books = csvToList("csvFiles/books.csv");
List<String[]> magazine = csvToList("csvFiles/magazine.csv");

您现在可以打印所有您想要的内容,例如第一种情况:根据ISBN显示所有书籍和杂志:

public void printISBN(string ISBN){
for(String[] s_tab in books)
if(s_tab[1].equals(ISBN))
System.out.println(s_tab[0]);
for(String[] s_tab in magazine)
if(s_tab[1].equals(ISBN))
System.out.println(s_tab[0]);
}

希望我能有所帮助。

编辑

您还可以为每个文件创建 3 个类,并对这些类的列表执行相同的操作:List<Authors> List<Books> List<Magazine>但如果您只需回答这 3 个问题,则没有必要。

关于java - 从CSV文件中读取数据,用Java进行比较和显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24201183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com