• ベストアンサー

リンクリスト内のノードに保管された情報を保存する

JAVAでの、一方向リンクリストを作成しています。 ノードに含まれる内容は以下のようなものです。 名前、ID、アドレス、電話番号、成績、生年月日 これらの情報はキーボードから入力され各ノード内に保管されます。 質問は、一度ぷろぐらむを終了する前にノード内にある入力された情報を保存したいのですがその方法がわからず困っています。 次回プログラムを立ち上げた際、再度このノード内に入力した情報を読み込む事は可能でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#119918
noname#119918
回答No.3

/* 一方向リストとしてjava.util.LinkedListを使用し、 リストの要素としてSomeData(名前,ID等を保持するクラス)を用いるものと した場合のコードです。 字数制限に引っかかるので、ファイルからのロードとセーブの部分のみ掲載します。 SaveAndLoad.load("sample1.txt"); でsample1.txtファイルを読み込み、LinkedListとして復元 SaveAndLoad.load(list , "sample2.txt"); で、list内容をsample2.txtファイルに保存 また、データファイルにおいて、名前、IDなどの要素は コンマ","で区切られるものとします。 */ class SaveAndLoad { // ファイルからロード public static LinkedList<SomeData> load(String filename) throws IOException , FileNotFoundException { BufferedReader br = new BufferedReader(new FileReader(filename)); String line; LinkedList<SomeData> list = new LinkedList<SomeData>(); while((line = br.readLine()) != null) { // 空行を読み飛ばす if(line.matches("\\s*")) { continue; } String[] items = split(line , ","); SomeData d = new SomeData(items); list.add(d); } br.close(); return list; } // ファイルへセーブ public static void save(LinkedList<SomeData> list , String filename) throws IOException { BufferedWriter bw = new BufferedWriter(new FileWriter(filename)); Iterator<SomeData> it = list.iterator(); while(it.hasNext()) { SomeData d = it.next(); bw.write(d.toString() + "\n"); } bw.close(); } // 文字列lineを、区切り文字delimで分割 private static String[] split(String line , String delim) { Vector<String> vec = new Vector<String>(); StringTokenizer tokenizer = new StringTokenizer(line , delim); while(tokenizer.hasMoreTokens()) { vec.add(tokenizer.nextToken()); } return vec.toArray(new String[vec.size()]); } }

shachi954
質問者

お礼

コードまで書いていただき本当に助かりました。 全て解決いたしました。 ありがとうございました。

その他の回答 (2)

回答No.2

可能です。 ○ データの集合 ○ ・ファイル → 個々の目的 ・DB    → 多目的 まぁ、簡単なものでしたらファイル、複雑なものはDBでよろしいかと。

shachi954
質問者

お礼

自分の場合はファイルに保存という事になります。 ありがとうございました。

  • nfonfonfo
  • ベストアンサー率63% (12/19)
回答No.1

こんばんわ。回答としては 1,FileWriterクラスを使用して、リンクリストのノード情報をファイルに保存。 2,プログラム起動時にFileReaderクラスを使用してファイルからノード情報を読み取り、リンクリストにノード情報を追加という方法で可能です。 ↓は補足質問です。 1,文中のリンクリストとはjava.util.LinkedListを使わずに、自作されたクラスなのでしょうか? 2,作成されたプログラムの実行形態はどの形態なのですか? (Javaアプリケーション・アプレット・swing/awt・その他) 参考情報 クラス FileReader http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/io/FileReader.html クラス FileWriter http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/io/FileWriter.html

shachi954
質問者

補足

ユーティリティを使わない自作のクラスで 実行形態はjavaアプリケーションです。 添付していただいたReader, Writerの情報で対応できました。 本当にありがとうございました。

関連するQ&A