2011-04-18 32 views
1

如何從文本文件中讀取字符串並存儲在散列表中? 文件包含兩列。將文本文件中的值存儲到地圖中

文件是這樣的:

名姓
Pranay Suyash等等...

+4

請發表你有什麼至今。如果您沒有任何東西,請搜索教程並在本網站中搜索您輸入的關鍵字。 – Mat 2011-04-18 10:57:05

+0

請從您的實際輸入文件中張貼幾行。可能有一個非常非常小的解決方案,但我們需要看一個小樣本。 – 2011-04-18 11:05:48

+0

實際輸入僅如上所述,即它包含一個列,其中包含firstname,然後是空格,另一列包含secondname和多行中的相應值。 – Pranay 2011-04-18 11:17:22

回答

5

這裏有一種方法:

import java.io.*; 
import java.util.*; 


class Test { 
    public static void main(String[] args) throws FileNotFoundException { 
     Scanner scanner = new Scanner(new FileReader("filename.txt")); 

     HashMap<String, String> map = new HashMap<String, String>(); 

     while (scanner.hasNextLine()) { 
      String[] columns = scanner.nextLine().split(" "); 
      map.put(columns[0], columns[1]); 
     } 

     System.out.println(map); 
    } 
} 

給定的輸入:

somekey somevalue 
someotherkey someothervalue 

此打印

{someotherkey=someothervalue, somekey=somevalue} 

如果你的線條看起來不一樣我建議你提取columns[0]columns[1]並根據需要進行字符串操作,或者,如果您對正則表達式感到滿意,可以使用Pattern/Matcher將該行與模式匹配,並從捕獲組中獲取內容。

1

在哈希表,如果你想每行中的兩列映射可以使第一列的值作爲關鍵字和第二列作爲值。但密鑰在Hashmap中應該是唯一的。如果第一列中的值是唯一的,你可以去下面的方法

Map<String,String> map = new HashMap<String,String>(); 
map.put(firstColVal,secondColVal); 
1

萬一

  • 鑰匙(第一列)包含空格和
  • 你列由分離無論是:,一個=或白色字符(除換行符)

那麼這可能工作:

Map<Object, Object> map = new Properties(); 
((Properties) map).load(new FileReader("inputfile.txt")); 

剛剛看到您的樣品輸入...你不應該把映射中的數據,除非它是保證所有 firstnames是唯一的。

否則會出現這種情況:

map.put("Homer", "Simpson"); // new key/value pair 
map.put("Bart", "Simpson"); // new key/value pair 
map.put("Homer", "Johnsson"); // value for "Homer" is replaced with "Johnsson" 

System.out.println(map.get("Homer")); // guess what happens.. 
+0

保證每個名字是不同的。如果第一列包含空格會發生什麼?如果我遇到過這種情況,你建議我需要做什麼? – Pranay 2011-04-18 12:07:17

+0

@Pranay - 你需要一個清晰的方式來分隔列,或者通過定義一個*分隔符*(一個''',一個標籤,一個空格...)或者通過定義一個位置(比如*第二列開始於位置20 *)。如果* space *是您的分隔符,並且您有多個單詞名(「Homer Bart Simpson」),則算法無法確定,第二個單詞(「Bart」)屬於名字還是姓。 – 2011-04-18 13:02:52

相關問題