EeBlog(テクニカルブログ) :Javaワンポイント

第10回 列挙型でビットフラグ

前回、「ビットフラグ」についてお話しました。

Java以外の言語では列挙型に数値の値を持っているものが多く、 「ビットフラグ」も列挙型を使用して実装する場合が少なくありません。

Javaもver1.5(Java5)より、列挙型がサポートされました。
列挙型をサポートしている言語の経験者にとっては非常にうれしい事でした。
ところが、列挙型に数値を関連付けできないことは大きな制限に思えたのではないでしょうか?
もちろん、「ビットフラグ」が使用できないためです。

しかし、Javaには「ビットフラグ」に取って代わる機能がちゃんと準備されています。
「EnumSet」クラスです。
前回のサンプルを列挙型と「EnumSet」を使用して変更してみました。
add()メソッドでフラグを立てている(追加する)のと、 contains()メソッドにてチェックを行っていることに注目してください。

(さらに…)

第9回 ビットフラグ

今回は「ビットフラグ」についてです。
「ビットフラグ」とは、整数型の各ビットを フラグに見立てて値を保持する方法です。
int型なら32bitですから、32個のフラグ(ブール値)を保持できます。

以下にサンプルを挙げますが、answerList 変数1つで 3つの入力した値を保持していること、 また、値定数を2の累乗で設定していることに注目してください。

フラグを立てるときはOR(|)演算を使用します。
フラグが立っているかチェックを行うときはAND(&)の結果を0と比較します。

(さらに…)

第8回 ツリー(階層化)構造

ワンポイントの更新が火曜日に変わりました。 今回はツリー構造についてです。
パソコンではフォルダ(ディレクトリ)操作等でよく利用しますね。
ツリー構造をデータ化する場合、データに階層のレベルや子データをもたせたりといった ことをよく目にしますが、実際には親のみを持たせるだけで片付きます。

また、以下に出てくるコードにもありますが、 再帰処理はツリー構造を処理する上で非常に有用です。
但し、一歩間違えばマシンごと動きを止めるような致命的なバグに結びつく 非常に危険な技術でもあります。
しっかりマスターしておきましょう。
以下、データの追加と表示を行うプログラムです。
長いですが、要所要所をしっかり確認しましょう。
また、メインを除いてデータクラス1つで作っているのも ポイントの一つです。

(さらに…)