[英]Split a text file using delimiter \t and store in hashmap in java
我有一个n列和n行用制表符分隔的文本文件。如何使用拆分功能将列和行存储到哈希图中。请帮助。
我的文本文件会像..
部门ID名称联系人
第1章678
欧洲经委会2 ttt 789
IT 3 rrr 908
我尝试了以下方法,但是效果不错。
Map<String,String> map=new HashMap<String,String>();
while(lineReader!=null)
{
String[] tokens = lineReader.split("\\t");
key = tokens[0];
values = tokens[1];
map.put(key , values );
System.out.println("ID:"+map.get(key ));
System.out.println("Other Column Values:"+map.get(values ));
}
这将返回文件的最后一个条目(行)的键,其值作为null。 但是我需要在地图上存储所有行和列。 我该怎么做?
如果我正确理解您的数据,
后
String[] tokens = lineReader.split("\\t");
在第一行进行处理,则数组中将有4个令牌。
如果您想通过以下方式存储地图,我认为您使用的是错误的逻辑:
IT->(1 ZZZ 678)....等,然后您需要对数据进行不同的处理。
您在地图中存储的内容如下:IT-> 1 ECE-> 2 ...,依此类推。
这就是为什么您尝试执行以下操作时会得到null的原因:
map.get(value);
您应该打印的是Key和map.get(key) 。
实际上,无论如何我都不认为Map是您想要的(但是我不知道您真正想要的是什么)。
现在,为了您对这个问题的理解,请尝试打印:
System.out.println("Total collumns: "+ tokens.length);
更新:
这应该为您工作。 它不是您想要的最优雅的实现,但是可以完成工作。 您应该从现在开始尝试对其进行改进。
Map<String,String> map=new HashMap<String,String>();
while(lineReader!=null)
{
String[] tokens = lineReader.split("\\t");
key = tokens[1];
values = tokens[2]+tokens[3];
map.put(key , values );
System.out.println("ID:"+key);
System.out.println("Other Column Values:"+map.get(key));
}
祝好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.