0

我有一个由制表符空格分隔的 n 列和 n 行的文本文件。如何使用拆分功能将列和行存储到哈希图中。请帮助。
我的文本文件会像..

部门 ID 名称 联系
IT 1 zzz 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。但我需要将所有行和列存储在地图中。我该怎么做?

4

1 回答 1

0

如果我正确理解您的数据,

String[] tokens = lineReader.split("\\t");

在第一行处理,数组中有 4 个标记。

如果您想以下列方式存储地图,我认为您使用了错误的逻辑:

IT -> (1 ZZZ 678) .... 等等,那么您需要以不同的方式处理数据。

您在地图中存储的内容如下:IT -> 1 ECE -> 2 ... 等等。

这就是为什么当你尝试做时你得到 null :

map.get(value);

您应该打印的是Keymap.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));
}

祝你好运!

于 2013-05-17T04:05:39.097 回答