2014-11-03 34 views
-3

我有一個CSV文件,這是合着network.Entries都是這樣的,以取代在Java中的唯一號碼的作者名:如何使用HashMap的

1992,M_DINE,R_LEIGH,P_HUET,A_LINDE,D_LINDE 

1992,C_BURGESS,J_CLINE,M_LUTY 

1992,M_DINE,R_LEIGH,P_HUET,A_LINDE,D_LINDE 

1992,F_ZWIRNER 

1992,O_HERNANDEZ 
... 

我要全部更換使用唯一編號作者姓名包含HashMap 我想要的輸出爲某事像這樣:

M_DINE 1 

    R_LEIGH 2 

    P_HUET 3 

    ... 

,我不希望被列入年。

+0

獨特的是什麼?數字是多少? – 2014-11-03 15:47:29

+1

好像你有答案 - 使用散列表映射作者到unqiue ID,你問如何使用HashMap? – yurib 2014-11-03 15:55:13

+0

這個問題似乎是無關緊要的,因爲它實際上是一個「gimme-teh-codez」請求。 – CPerkins 2014-11-03 16:17:30

回答

0

維護作者姓名集合,如果集合不包含作者姓名,則將其添加到集合中,爲每個作者讀取每行,分隔逗號,捨棄年份。然後從集合中讀取並分配編號。

0

從概念上講,你已經解釋了你想要做的一切。

您將需要一些對象。

HashMap<String, Integer> authorList = new HashMap<>(); 
int authorCounter = 0; 

很明顯,地圖和跟蹤您的索引的計數器。

我不知道你的主要方法是什麼,但你需要處理輸入。

public void foo() { 
    // ... handle the file import through scanner in 
    while(in.hasNext()) { 
     String input = in.next(); 
     String[] authors = input.split(','); 
     for(int i = 1; i < authors.length; i++) { //skip index 0 because that's the year 
      addAuthor(authors[i]); 
     } 
    } 
} 

這是一個非常普通的addAuthor功能。您可能想要將其解壓到hasAuthorgetAuthorId等等,但是如果它沒有用最新的迭代計數器找到它,這隻會添加一個作者。

void addAuthor(String s) { 
    if(authorList.get(s) == null) 
     authorList.put(s, ++authorCounter); 
} 
+0

我寫了我的代碼,我想在另一個csv文件中寫入結果。但它不工作。它沒有錯誤,但輸出錯誤:( – user20993 2014-11-05 11:36:56

+0

然後發佈您的代碼;) – Mikey 2015-12-11 08:00:40