java - java - 将txt文件读取到hashmap,用“t”分割

我有一个这种形式的txt文件:


 1 01/01/2018 01:00 1915 8,4


 1 01/01/2018 02:00 2111 8,8



读取文件后,我希望将它存储到有此结构的映射中:


 <"Key1",1> <"Key2",01/01/2018 01:00> <"Key3",1915> <"Key4",8,4>



这是导入代码


 BufferedReader buf = new BufferedReader(new 


 FileReader("test.txt"));


 ArrayList<String> words = new ArrayList<>();


 String lineJustFetched = null;


 String[] wordsArray;


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



 while(true){


 lineJustFetched = buf.readLine();


 if(lineJustFetched == null) {


 break;


 } else {


 wordsArray = lineJustFetched.split("t");


 for(String each : wordsArray){


 words.add(each);


 // System.out.println(words.toString());


 map.put("Key1",each);


 System.out.println(map.toString());



 }


 }


 }


 buf.close();



我不知道应该把这个结构放到map上的问题是什么


 <"Key1",1> <"Key2",01/01/2018 01:00>...



时间:

for与索引一起使用


for(int i = 0 ; i < wordsArray.length ; i++) {


 map.put("Key"+(i+1), wordsArray[i]);


}



在注释之后,可以设置有字段名称的数组,并且使用它,


String[] fieldNames = {"id","date","whatever"};


for(int i = 0 ; i < wordsArray.length ; i++) {


 map.put(fieldNames[i], wordsArray[i]);


}



将split的结果像这样放置到map中,按key分配:


wordsArray = lineJustFetched.split("t");


map.put("Key1", wordsArray[0]);


map.put("Key2", wordsArray[1]);


map.put("Key3", wordsArray[2]);


map.put("Key4", wordsArray[3]);



好吧,首先你的错误是,你已经将Key1硬编码为你的Hashmap的key,你应该改变它。

但是为什么你不使用OOP?

希望这能满足你的目的,我按照你的要求更新了你的代码,输入将与你在问题中提到的相同。


BufferedReader buf = new BufferedReader(new FileReader("src/com/test/test.txt"));


ArrayList<Map> allWordsList = new ArrayList<>();


String lineJustFetched = null;


String[] wordsArray;


Map<String, String> map;


String[] fieldNames = {"Id","Date","Code","No" };



while ((lineJustFetched = buf.readLine()) != null) {


 wordsArray = lineJustFetched.split("s+");


 map = new HashMap<>();


 for (int i = 0, j = i; i < wordsArray.length; i++) {


 if (i == 1) map.put(fieldNames[j++], wordsArray[i] +"" + wordsArray[i + 1]);


 if (i != 1 && i != 2) map.put(fieldNames[j++], wordsArray[i]);


 }


 allWordsList.add(map);


}


buf.close();



System.out.println(allWordsList);



你会获得如下输出


[{No=8,4, Id=1, Code=1915, Date=01/01/2018 01:00}, 


{No=8,8, Id=1, Code=2111, Date=01/01/2018 02:00}]



...