2011-12-20 13 views
1

私は書籍、雑誌、サイトなどの参照を格納するアプリケーションを作成しています。私はすでに多くのことをしています。Java:ArrayList、文字列の操作と構文解析

私が欲しいのは、上記の仕様を実装する最良の方法は何ですか?

ライブラリの保存にはどのような形式のテキストファイルを使用しますか?ファイルタイプではなくフォーマットです。私は現時点では単純なテキストファイルを使用しています。しかし、以下のようにフォーマットを実装する予定です。

<book><Art of Human Hacking><New York><2011><1> 
<journal><Achieving Maximum Speed In 802.11n><London><2009><260-265> 

第一タグ<book><journal>はタイプ識別子です。私はArrayListを使用しました。私は多次元ArrayListを使用し、以下のように各項目を格納する必要がありますか?

[[Art of Human Hacking,New York,2011,1][Achieving Maximum Speed In 802.11n,London,2009,260-265]] 

私はStringTokenizerを使用していると私はスペースを区別することはできません。これをどうやって解決するのですか?

私は既にすべての機能を実装しており、一意の検索、編集、削除、追加などのすべての機能を実装しています。しかし、すべてがスペースなしでコンテンツに行われます。

+0

私は本当にJSONが好きです。 JSONの既存のパーサーは、Javaで確実に開発されます。短く、XMLよりも速く解析されます。 –

答えて

1

プロジェクトで禁止されていない限り、独自のシリアライザを使用する必要があります。

互換性と人間の可読性のために、CSVが最適です。既存のCSVパーサーを使用して正しいエスケープを得る(自分自身を書くのは難しくありませんが、バグを避けるために既存のパーサーを使用することを保証するのは難しい)。 Googleは次のようになりました:http://sourceforge.net/projects/javacsv/

人間の編集が優先されない場合は、JSONも人間にとっては読みやすいですが、CSVほどシンプルではなく、Excelなどでは表示されません。

次に、ネイティブJavaシリアル化やGoogleプロトコルバッファなどのバイナリプロトコルがあります。これらはより速いかもしれませんが、明らかにデータストアを表示する能力を失い、おそらくデバッグを複雑にします。

+0

大変ありがとうございますが、シリアライザをCSVと共に使用すると、テキスト操作が簡単になりますか?私は操作を行う必要があるので、テキストファイルを操作するために配列リストと共にシリアライザを使用する例にリンクを張ることができます。 – Milan

+0

私は、オブジェクトを書き込み可能な形式に変換するための一般的な用語としてシリアライザを使用していました。リンク先のCSVライブラリを使用している場合は、読めるようにCSVReaderオブジェクトを作成し(ファイル名をパラメータとして渡します)、readRecord()を呼び出して行を進め、別のget()メソッドを使用して異なる列の値を取得します(ヘッダー名を設定した場合はヘッダー名で取得することもできます)。例:while(csv.readRecord()){myArray.add(csv.get(0)); }最初の列のすべての項目を配列に追加します(通常、すべての列を含むサブオブジェクトを作成します)。 –