• ベストアンサー

HashSetのデータをファイルにしたい

HashSetのデータをファイル化したいのですが、どのようにすればよいでしょうか?以下のコードで画面出力は出来るのですが、BufferedWriterのwriteメソッドでファイルに追記したくてもそれぞれの文字列の長さはデータ毎にサイズが異なるためwrite(String s, int off, int len) が使えそうにありません。どうすればファイル化出来るでしょうか?もしくは、HashSetにこだわるつもりはないので、HashSet以外で、一意性を保証するコレクションクラスがあればそちらの書き方でも構いません。 public class TestHash { public static void main(String[] args) throws Exception { HashSet hs = new HashSet(); hs.add("aiueo"); hs.add("kakikukeko"); hs.add("sashisuseso"); Iterator it = hs.iterator(); FileWriter writer = new FileWriter("/home/taro/aaa.txt"); BufferedWriter bwriter = new BufferedWriter(writer); while(it.hasNext()) { System.out.println(it.next()); //画面出力はこれでOK bwriter.write(it.next()); //これはNG } bwriter.close(); } }

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

  • ベストアンサー
  • Hardking
  • ベストアンサー率45% (73/160)
回答No.1

it.next()メソッドの戻り値は、java.jang.Object型なので System.out.println(it.next()); はOK bwriter.write(it.next());はNG よってit.next()メソッドの戻り値の型をString型に変換する すれば良いと思います。 ↓ bwriter.write(it.next().toString());

redhat_001
質問者

お礼

なるほど。。next()の戻り値の型をきちんと認識出来ておりませんでした。有り難うございました。

その他の回答 (1)

  • hal_n
  • ベストアンサー率43% (7/16)
回答No.2

PrintWriter を使ってはどうでしょうか。 1行分の出力内容を引数にとるメソッドが実装されています。 それはそうと、ループ内で it.next() を2回以上呼び出すとエラーになりますよ。 理由は・・・、自分で考えてみてください。

参考URL:
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/io/PrintWriter.html#println(java.lang.String)
redhat_001
質問者

お礼

ご回答有り難うございました。

関連するQ&A