2012-08-08 59 views
0

我正在閱讀文件,並希望將文件存儲起來直到某個單詞,在本例中爲'yes'爲HashMap of < Integer, document >.但我被卡住了HashMap,這是我的思路。將文件的片段放入HashMap中 - Java

BufferedReader in = new BufferedReader(new FileReader("filename.txt")); 
String line;  
int i = 0; 
    while ((line = in.readLine()) != null) { 
     if (!line.startwith("yes");{ 
     //add line to hashMap[i] 
     i++; 
     } 

    System.out.println(hashMap[i]); 
} 

如何在HashMap中添加我的文字直到'是'?

+0

什麼是你的問題? – Sap 2012-08-08 05:49:49

回答

1

您使用HashMap存儲具有唯一鍵的鍵值對。

你當然可以在分割財產以後您的線路:

split_line = line.split(delimiter);

和存儲:

\** I am being unsafe here. You should probably check for null and type. *\
hashmap.put(new Integer(split_line[0]), split_line[1]);

,但是這是你想要做什麼?

+0

我以爲它更像'map.put(我,行)',但'我'將需要一個整數,所以你最終'map.put(新整數(我),線)' ,但這是我的承擔:P – MadProgrammer 2012-08-08 05:56:00

+0

我使用HashMap,因爲我需要具有唯一鍵的鍵值對。在我閱讀的整個文檔中,我想將它分成特定的單詞或標籤。 – Bipa 2012-08-08 05:57:17

+0

是的,@MadProgrammer,我認爲這是我正在尋找的。 – Bipa 2012-08-08 05:59:40

0

如果您在地圖中的鍵將是從0到n的整數值,那麼您不需要地圖,而只需要一個列表。

List<String> goodWords = new ArrayList<String>(); 
while ((line = in.readLine()) != null) { 
     String[] words = line.split(" "); 
     for (String str : words) { 
      if (!"yes".equals(str)) { 
       goodWords.add(str); 
      } 
     } 
} 
+0

我仍然試圖找出Java。我希望這不是一個愚蠢的問題,但是我如何看待這個列表,例如在第三個文檔中單詞「是」已經分割它?爲什麼使用列表? – Bipa 2012-08-08 06:06:50

+0

@ Jo-你說你想把單詞添加到你的收藏中,直到單詞「是」;這意味着肯定不會在收藏中。但是,如果集合中包含「是」,那麼爲了找到它的位置,您應該調用方法goodWords.indexOf(「yes」)。您應該使用一個列表,因爲它具有與Map 相同的功能,整數從0到n;只有列表更快(沒有散列)。 – m3th0dman 2012-08-08 06:10:55

+0

謝謝你解釋爲什麼使用這個列表。我會研究.indexOf()。 – Bipa 2012-08-08 06:14:55

0

我真的不明白你想要在HashMap中實際存儲什麼。你能更具體一點嗎?

以下是您如何使用掃描儀 - 我更喜歡它,然後簡單地解析線條。

public class Main { 
public static void main(String[] args) throws FileNotFoundException { 
    StringBuilder responseBuilder = new StringBuilder(); 
    File file = new File("/Users/eugene/Desktop/MyFile.txt"); 
    Scanner scanner = new Scanner(file); 
    scanner.useDelimiter("yes"); 
    while(scanner.hasNext()){ 
     responseBuilder.append(scanner.next()); 
     break; 
    } 
    System.out.println(responseBuilder.toString()); 
} 

}

+0

我想爲每一段文本存儲唯一的值,直到某個標記,我認爲使用HashMap將是最好的方式,例如HashMap ,其中Integer是唯一值,String是文本。 – Bipa 2012-08-08 06:10:24

+0

@ Jo- yup似乎是一種很好的做事方式。問題是如果你想根據更多的關鍵字來分割這個文檔:「是」,「否」,「好」......等等。然後最好的事情(IMO)將使用匹配器和組。你還應該考慮有兩個「是」的例子,或者更好的「yesSir」,它應該或不應該被認爲是文件中的一個標記? – Eugene 2012-08-08 06:13:47