- ベストアンサー
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(); } }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
it.next()メソッドの戻り値は、java.jang.Object型なので System.out.println(it.next()); はOK bwriter.write(it.next());はNG よってit.next()メソッドの戻り値の型をString型に変換する すれば良いと思います。 ↓ bwriter.write(it.next().toString());
その他の回答 (1)
- hal_n
- ベストアンサー率43% (7/16)
PrintWriter を使ってはどうでしょうか。 1行分の出力内容を引数にとるメソッドが実装されています。 それはそうと、ループ内で it.next() を2回以上呼び出すとエラーになりますよ。 理由は・・・、自分で考えてみてください。
お礼
ご回答有り難うございました。
お礼
なるほど。。next()の戻り値の型をきちんと認識出来ておりませんでした。有り難うございました。