パッケージ com.lmt.lib.bms

クラス BmsArray

  • すべての実装されたインタフェース:
    Iterable<Integer>, Collection<Integer>, List<Integer>

    public final class BmsArray
    extends AbstractList<Integer>
    0(00)~255(FF)の16進整数値、0(00)~1295(ZZ)の36進整数値、0(00)~3843(zz)の62進整数値の配列を表現するクラスです。

    当クラスでは、オブジェクト生成時に配列を表現した文字列、およびその文字列が表す基数を入力し、 文字列の解析結果を整数の配列データに変換します。その後は配列に対して変更を加えることはできません。

    また、配列データを外部データ出力されたBMS上での文字列に変換する機能も有しています。以下に変換例を示します。
    16進数の場合:"004A007800FFC9"
    36進数の場合:"GH00ZAZ60000AFPIZZ"
    62進数の場合:"A8006x00zC00QPyt"

    • コンストラクタの詳細

      • BmsArray

        public BmsArray​(int base)
        指定された基数の空の配列を生成します。
        パラメータ:
        base - 入力元データの基数(16, 36, 62のいずれかのみサポートしています)
        例外:
        IllegalArgumentException - radixが16, 36, 62以外
      • BmsArray

        public BmsArray​(String src,
                        int base)
        指定された基数で入力元データを解析し、配列を生成します。

        基数に16を指定した場合、認識可能な文字は0~9,a~f,A~F、36, 62の場合は0~9,a~z,A~Zとなり、 いずれの場合も2文字1セットの整数値となります。従って、1つの要素で表現可能な値の範囲は 基数16で0~255、基数36で0~1295、基数62で0~3843です。

        入力元データの空白文字など、認識不可能な文字をトリミングする機能はありません。 それらの文字は予め除去したうえでこのコンストラクタを呼び出してください。

        入力元データの文字数が奇数の場合、最後の文字が"0"である場合に限り、最後の要素を"00"と見なして解析します。 このケースは構文エラーに対する特別な救済措置であり、本来であればエラーとして処理されるべき内容です。 救済措置は通常では不要なデータ編集などの余分な処理が行われパフォーマンスが低下しますので、 構文誤りのデータを入力しないよう注意してください。

        パラメータ:
        src - 入力元データ
        base - 入力元データの基数(16, 36, 62のみサポートしています)
        例外:
        NullPointerException - srcがnull
        IllegalArgumentException - srcの文字数が2で割り切れず、最後の文字が"0"ではない
        IllegalArgumentException - srcに解析不可能な文字が含まれる
        IllegalArgumentException - radixが16, 36, 62以外
      • BmsArray

        public BmsArray​(BmsArray array)
        指定された配列と同等の配列を生成します。

        新しく生成された配列オブジェクトは、入力元配列と同じ基数、要素数、データ内容を返すようになります。

        パラメータ:
        array - 入力元配列
        例外:
        NullPointerException - arrayがnull
    • メソッドの詳細

      • toString

        public String toString()
        配列の内容を文字列に変換します。

        文字列の内容は、配列生成時に指定された入力元データ、および基数に従って変換されますが、 入力元データの内容に関わらずアルファベットは全て大文字で表現されます。

        オーバーライド:
        toString クラス内 AbstractCollection<Integer>
        戻り値:
        文字列に変換された配列
      • equals

        public boolean equals​(Object obj)
        配列の内容が一致しているかを判定します。

        配列の基数、および内容が完全に一致している場合のみ「一致」と判定します。ただし、入力元文字列の アルファベット文字の大小は判定に影響しません。

        定義:
        equals インタフェース内 Collection<Integer>
        定義:
        equals インタフェース内 List<Integer>
        オーバーライド:
        equals クラス内 AbstractList<Integer>
        パラメータ:
        obj - 比較対象配列
        戻り値:
        配列の内容が一致している場合はtrue
      • getValue

        public final int getValue​(int index)
        整数値配列から指定された位置の数値を取得します。

        get(int)とは異なり、プリミティブ型として値を取得します。

        パラメータ:
        index - インデックス
        戻り値:
        指定された位置の数値
        例外:
        IndexOutOfBoundsException - インデックスが0未満または配列の要素数以上
      • getBase

        public int getBase()
        入力元データの基数を返します。
        戻り値:
        基数