2015-04-17 93 views
-2

我是編程的新手,從Core Java開始學習Java。Java:將CSV讀取到鏈接列表(轉)

這本書提到了幾行關於在Java中讀取csv文件並將其內容存儲到data-structure

  • 有它具有以下行爲者的一所學校:教職員工和學生
  • 學院

    因此,雖然拖網互聯網,我碰到下面的問題就來了以下屬性:姓名,電話號碼,電子郵件地址,部門,研究論文數

  • 名學生具有以下屬性:姓名,電話號碼,電子郵件ID,地址,卷號,GPA
  • 員工具有以下屬性:姓名,電話號碼,電子郵件ID,地址,部門,工資

  • 現在,所有這些數據都存儲在一個單一的csv文件以下列方式:

Student,Harry Potter,9999999,[email protected],Hogsmeade Street,1,4.0 

Staff,Argus Filch,888888,[email protected],Hogwarts,Cleaning,5000 

Faculty,Snape,555555,[email protected],Hogwarts,Potions,40000 

. 
. 
. 
. 
  • 現在,我需要閱讀從CS文件中的數據,在Java中,並將其存儲到一個鏈接列表如下順序,在:學院紀錄,隨後工作人員記錄,然後學生記錄

我的代碼:

我寫了到目前爲止的代碼是:

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

+0

那麼,什麼是問題?如何建立鏈表? – Bubletan

+0

通過創建您自己的鏈接列表您的意思是你不想使用java.util.List ..? – Abhishek

+0

順便說一句。你發現的問題包括一些不好的設計,但在問題前面。一個理智的實現可能不會將學院/學生/工作人員的(單獨的)概念存儲在同一個CSV文件中。首先,輸入數據中的'列'意味着不同的東西,這取決於行的'類型'。 – Paul

回答

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; 
    } 
} 
1

對於鏈表我建議閱讀羅伯特Sedgewick的算法書籍之一。 (如果你知道一些Java和b)你知道鏈表是​​如何工作的,那麼實現一個鏈表本身並不會太難)。我希望Web上也有很多例子。

編寫了自己的鏈表實現(用於學習):扔掉它,不要在真正的程序中使用它。認真。現有的庫實現將會更好;編寫真實世界的集合庫是一項嚴肅的事業。

如果您的數據(文本)可能包含逗號和而非 CSV分隔符(通常在真實數據中爲真),則解析CSV比聲音更復雜。

但是一個幼稚的做法是:

  • 打開文件使用LineNumberReader
  • 在循環中調用readLine(),直到返回null(不再有行)。
  • 拆分每行讀取line.split(",")
  • 處理每一行的字段。
+0

你也應該問自己爲什麼要,特別是鏈表 - 而不是其他類型的列表實現。 (我不認爲鏈接列表是我的第一選擇,在你想要做的事情中) – Paul

+0

Hi @Paul,我的主要問題是從csv讀取數據並將其存儲到鏈接列表中。一個說明性的代碼片段將會走很長的路......事先感謝:) – Jain