0

タブ スペースで区切られた n 列と n 行のテキスト ファイルがあります。分割関数を使用して、列と行をハッシュマップに格納する方法を教えてください。助けてください。
私のテキストファイルは次のようになります..

部門 ID 名前 連絡先
IT 1 zzz 678

ECE 2 ttt 789

それ 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);

代わりに印刷する必要があるのは、キー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));
}

幸運を!

于 2013-05-17T04:05:39.097 に答える