2014-11-03 53 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