2011年9月4日日曜日

Javaの私的まとめ15

Javaのお勉強その15

  1. シリアライズ・デシリアライズ

    オブジェクトのデータを書き込み、読み込みすることをそれぞれシリアライズ、デシリアライズという。

    シリアライズできるクラスはインタフェースSerializeableを実装したものである。インタフェースはメンバを持たないので、特別な実装は不要。

    aというファイルにあるクラスAAのオブジェクトAを書き込む方法はつぎのようになる。

    FileOutputStream fos = new FileOutputStream("a");
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    oos.writeObject(A);
    oos.close();
    

    逆にファイルを読み込む方法は次のようになる。aというファイルからオブジェクトを読み込む。

    FileInputStream fis = new FileInputStream("a");
    ObjectInputStream ois = new ObjectInputtStream(fis);
    AA aa = (AA)ois.readObject(); // Object型で読み込まれるのでキャストする
    ois.close();

    transientなフィールド、staticなフィールドはシリアライズされない。

    DataInputStreamのreadInt、DataOutputStreamのwriteIntなどでも特定の型のデータの読み書きができる。

    スーパークラスがSelializableを実装している場合、そのサブクラスもSelializableを実装していることになる。サブクラスのオブジェクトのシリアライズ・デシリアライズはスーパークラスの部分も対象とする。

    スーパークラスがSerializeを実装していない場合、サブクラスのシリアライズ・デシリアライズではスーパークラスのシリアライズ・デシリアライズは行われない。オブジェクトのスーパークラス部分はスーパークラスの引数を取らないコンストラクタで初期化される。

  2. コンソール

    コンソールはGUIを使わない入出力を簡単・安全にする。次のようにするとConsoleオブジェクトが得られる。

    Console c = system.console();
    printfの書式(フラグ)
    String readLine() キーボードから1行テキストを読みこむ
    String readLine(String format,Object...args) 書式設定したうえで1行読み込む
    char[] readPassword エコーを無効にしたコンソールから1行テキストを読み込む
    char[] readPassword(String fmt,Object ...args) 書式設定したうえで、エコーを無効にしたコンソールから1行テキストを読み込む
    Console format(String fmt,Object... args) 書式付文字列をコンソールに書き込む
    void flush() コンソールをフラッシュして出力を直ちに書き込む
  3. コレクション

    コレクションとは、複数のオブジェクトを格納しておくクラス、インタフェースのことである。java.utilパッケージに属する。

    主なインタフェースの種類
    Collection コレクションのルート。順序も重複も規定されていない
    List 順序づけられたコレクション。任意の位置に対する要素の挿入・削除が速い
    Map キーとデータを対応させたコレクション。キーはユニークになる。
    Set 重複のないコレクション、数学の集合に相当。
    Queue キュー(FIFO)
    主なコレクションクラス
    ArrayList 要素を変えられる配列のようなもの。スレッドセーフでないがVectorより高速。(Listの実装)
    Vector 要素を変えられる配列のようなもの。スレッドセーフ。(Listの実装)
    HashMap ハッシュを使ったマップ。nullが利用できる。(Mapの実装)
    Hashtable ハッシュを使ったマップでnullが使えない。スレッドセーフ。(Mapの実装)
    HashSet ハッシュを使ったセット(Setの実装)

0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計