JAVAで大量の静的な配列データを扱う

スポンサーリンク
【日 時】2020年1月18日(土) 13:30~17:00(開場・受付:13:20ごろ)
【場 所】京急本線 京急蒲田駅東口から徒歩3分、JR蒲田東口から徒歩13分 大田区産業プラザ3階 特別会議室
【対 象】膵臓がん患者とその家族、遺族
【参加費】1,000円(会場使用料及び資料代)
【定 員】 80名
【内 容】
●講演:押川勝太郎先生「がん治療の心得は登山と同じと知ってましたか?~トラブルを織り込んだ先読み能力が寿命を伸ばす~」
●患者さんどうしの情報交換会~フリートーキング

オフィシャルサイトはこちら
申込み受付を始めました。
LINEで送る
Pocket

最終更新日

今回はがんとは関係のない内容ですが、参考メモとして。

JAVA初心者が大量のデータ処理に困って・・・・

ある目的でAndroidのアプリを開発しているのですが、大量の静的なデータを扱う必要があり、その処理方法を考えあぐねていました。JAVAの入門書にも、より詳しい応用編にも紹介されていない。インターネットで探してもこれといった適格な説明がないのです。

JAVAのプログラムはClass、つまり部品の設計図あるいは鋳型の集合のようなものですから、大量のデータを扱う配列を一つのClassとして宣言すれば良いのですが、別のClassから利用するには、そのつど実体化=インスタンスする必要があります。それは良いのですが、配列を初期化する、つまり配列に値を入力するのは使う側のClassで行うのです。ということは、この使う側のClassのプログラムが延々と長くなるのです。それを避けたいがために別のClassに配列を宣言したのに、これでは意味がありません。

結論から言うと、次のようにして解決できました。

  1. 配列をClass(B)に修飾子static、finalを付けて宣言する。
  2. 同じClass(B)に初期化メソッドを作成し、その中で配列の初期化をする。
  3. 呼びだす側のメインClass(A)のoncreate()内にてこのメソッドを呼びだせば、アプリの起動時に配列に初期値が代入される。

3次元のfloat型の配列の例では、プログラムはこんな感じになります。

Parameter.java

    package com.demo.calc;
    public class Parameter {   
        public static final float [][][] Sensitivity
                                 = new float [10][20][5];   
    public static void ArrayInit() {   
            // 製品1
            Sensitivity[0][1][0] = 0.475f;
            Sensitivity[0][1][1] = 0.5588f;
            Sensitivity[0][1][2] = 0.5588f;
            Sensitivity[0][1][3] = 37.861f;
            Sensitivity[0][1][4] = -8.7016f;
          
            // 製品2
            Sensitivity[0][2][0] = 1.7273f;
            Sensitivity[0][2][1] = 1.7273f;
            Sensitivity[0][2][2] = 1.7273f;
            Sensitivity[0][2][3] = 112.59f;
            Sensitivity[0][2][4] = -2.3346f;
          
            // 製品3
            Sensitivity[0][3][0] = 2.1111f;
            Sensitivity[0][3][1] = 2.1111f;
            Sensitivity[0][3][2] = 2.1111f;
            Sensitivity[0][3][3] = 233.24f;
            Sensitivity[0][3][4] = -76.379f;
          
            //<・・・略・・・>
           }
       }

呼びだして使う側のmain activityには、

   package com.demo.calc;
   
   public class MainActivity extends Activity {
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
      
        // 配列初期化のメソッドを呼びだす。
        // クラス名.メソッド名
        Parameter.ArrayInit();
      
        //<・・・略・・・>
     }
}    

と最初のほうに書いておきます。

以後は、使いたいところで、クラス名.配列名[1][0][3]などのように指定して呼びだせば良いのです。

float Alfa = Parameter.Sensitivity[1][0][3];

  • 配列の宣言でstatic、final修飾子を付ける。静的な変数で変更は許可しないという意味になります。
  • 初期化するためのmethodにもstatic 修飾子を付ける

これが要点でした。

技術屋さんなどAndroid,JAVAで大量のデータを扱うことがあろうかと思うのですが、皆さんどうされているのかな。

これでアプリは正常に動いているから問題ないと思うが・・・。


がんと闘う多くの仲間がいます。

にほんブログ村 病気ブログ すい臓がんへ
にほんブログ村

にほんブログ村 病気ブログ がんへ
にほんブログ村


スポンサーリンク

このブログの関連記事

  • ライフサイエンス辞書をマウスオーバーでライフサイエンス辞書をマウスオーバーで ライフサイエンス辞書オンラインサービスに「ライフサイエンス辞書(LSD)が5年ぶりに更新された」と書かれています。ATOKの拡張辞書である「LSD Plus 2010 for […]
  • 道元の「生死」観:『正法眼蔵』がおもしろい(2) ネルケ無方氏がこの「現成公案」を一度英語にしてから現代語訳した本が出版されている。『道元を逆輸入する』。なるほど、英語訳するためには道元の言わんとするところをしっかりと掴んでいな […]
  • ASCO 2010 Gemcitabine & nab-paclitaxel(アブラキサン)ASCO 2010 Gemcitabine & nab-paclitaxel(アブラキサン) ASCO […]
  • 「市民のためのがん治療の会」講演会 『がん医療への新たな挑戦』「市民のためのがん治療の会」講演会 『がん医療への新たな挑戦』 「市民のためのがん治療の会」講演会『がん医療への新たな挑戦』に参加しました。 会場に着いたのは13時前なのに、既に席は9割方埋まっていました。モニターを置いた別会場を用意したがそ […]
  • 原子力ムラの”勘違いした”逆襲原子力ムラの”勘違いした”逆襲 このブログでも取り上げた、年末に放映されたNHK 『追跡!真相ファイル:低線量被ばく […]
  • 親鸞と複雑系科学親鸞と複雑系科学 昨年の4月25日の東電・保安院の外国人記者向けの会見に、一人も記者が出席しなかったとの報道がありました。普通の人間の感覚なら、記者会見を中止するのでしょうが、原子力保安院の方々は […]
  • ガンの患者学研究所 (4)ガンの患者学研究所 (4) 川竹氏の『ガン・治る法則12カ条』には部分的に見れば賛同できるものも少なくありません。例えば「どんなときにも希望はある」。たとえ末期であっても希望を持つことは大切です。治った患者 […]
  • 中川恵一 × 近藤誠 (1)中川恵一 × 近藤誠 (1) 私が東京新聞に変えてのは3.11の前だが、NHKニュースや朝日などの全国紙の鑑定垂れ流しの記事を読むよりはずっと精神的に良い。首都圏に住んでいるのなら、新聞は東京新聞に変えること […]
LINEで送る
Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です