イントロダクション
プログラミングの主な用途としては、データの処理、文字列をくっつけたり、右の情報と左の情報をくっつけたり、もちろん逆に切り離したり。。。
イメージとしては、レゴブロックのように、くっつけて、ばらしてを繰り返して別な形にするということが往々にしてあります。
それというのは、情報を改ざんさせないためだったり、作成者の考えた仕組みを作る理由で。。。などいろんな理由でデータの操作が必要になります。
そこで標準的に使えるのが、データをそのまま取得するListや配列、他にはキーと値(Value)をセットにして保持するMapがあります。
インタフェースMap<K,V>
Java Docの解釈を行います。
「既知のすべての実装クラス:」と書いてある部分は
javaAPIで提供されているクラスです。
→java.util.Mapをインポートすればおっけ
例:import java.util.Map
実装のサンプルはこちら
Mapの実装クラス(インターフェースでない)は
サンプルコードではHashMapとPropertiesを記載しています。
Mapの使い方
Mapインターフェースクラスは、既存の実装クラスとして、ほかにもあるのですが、よく使うものとしてHashMapがあります。他にも、LinkedHashMapもあり、ListのArrayListとLinkedListのような関係です。
putとget
Mapは、基本的に下のような操作を行います。
- 「put」メソッドで値をセット
- 「get」メソッドで値を取得します。
Mapの使用例:じゃんけんゲーム
Mapを使用したサンプル。じゃんけんゲームでの各パターンをセットする。
じゃんけんの各手を以下のように定義してそれぞれのキー(パターン)に対応した結果を取得する
- じゃんけんの判定はint型
変数名 | 値 |
---|---|
YOU_WIN | 0 |
YOU_LOOSE | 1 |
AIKO | 2 |
- 各手は文字列型
変数名 | 値 |
---|---|
GU | "0" |
CHOKI | "1" |
PA | "2" |
<プレーヤーの価値ケース>
GU + CHOKI = "01"; => マップのキー
/* 勝敗判定フラグ:勝ち(ユーザー) */
final int YOU_WIN = 0;
/* 勝敗判定フラグ:負け(ユーザー) */
final int YOU_LOOSE = 1;
/* 勝敗判定フラグ:あいこ(ユーザー) */
final int AIKO = 2;
/* グー */
final String GU = "0";
/* チョキ */
final String CHOKI = "1";
/* パー */
final String PA = "2";
// 勝敗判定マップを作成
Map<String, Integer> hanteiMap = new HashMap<String, Integer>();
// プレーヤーの勝ちケース
hanteiMap.put(GU + CHOKI, YOU_WIN);
hanteiMap.put(CHOKI + PA, YOU_WIN);
hanteiMap.put(PA + GU, YOU_WIN);
// プレーヤーの負けケース
hanteiMap.put(GU + PA, YOU_LOOSE);
hanteiMap.put(CHOKI + GU, YOU_LOOSE);
hanteiMap.put(PA + CHOKI, YOU_LOOSE);
// あいこのケース
hanteiMap.put(GU + GU, AIKO);
hanteiMap.put(CHOKI + CHOKI, AIKO);
hanteiMap.put(PA + PA, AIKO);
※PropertiesはMapと違う部分がありますが
概ね一緒です、細かいところはサンプルコードをみてください
Mapの使い方:そのほか
Mapはキーと値をセットにしているので
「contains」メソッドでキーや、値の有無をチェックしたり
Listクラスの様に「forEach」でループしたりと色々できます。
マスターデータとのリンク
下のように処理を行うときにMapで処理を行うと簡単にできます。
- マスターデータのキーを取得する
- マップからキーに対応するデータの有無をチェック
- マップにキーがあればデータの取得とリストへの登録
// マスタカテゴリ設定とのリンク
String mstKey = data.getMaster();
if (masterMap.containsKey(mstKey)) {
RpgMaster mst = masterMap.get(mstKey);
// パラメータ定義のキーリストに追加
mst.getChildList().add(data.getKigo());
}
ゲームのマップを作る
これも、Mapインターフェースクラスを使用して作成することができます。
タイルの1つ1つがキーと値の関係になっていて、値にはイメージ(画像)がセットされています。
Mapインターフェースクラスはリストインターフェースクラスと並び使用頻度の高いクラスです。
他にもTreeMapなどがあり、ソート(並び替え)が自動でできます。
並び替えはまた後日・・・
関連ページ一覧
Eclipse セットアップ
- Java Install Eclipse〜開発ツールのインストール〜
- TensorFlow C++環境〜EclipseにCDTをインストール〜
- Setup OpenGL with Java〜JOGLを使う準備 for Eclipse〜
- Eclipse Meven 開発手順〜プロジェクトの作成〜
- Java OpenCV 環境セットアップ(on Mac)
- Eclipse SceneBuilderを追加する
- JavaFX SceneBuilder 〜EclipseとSceneBuilder連携~
Java Basic一覧
- Java Basic Level 1 〜Hello Java〜
- Java Basic Level2 〜Arithmetic Calculate〜
- Java Basic Level3 〜About String class〜
- Java Basic Level 4〜Boolean〜
- Java Basic Level 5〜If Statement〜
- Java Basic Summary from Level1 to 5
- Java Basic Level 6 〜Traning of If statement〜
- Java Basic Level8 〜How to use for statement〜
- Java Basic Level 8.5 〜Array〜
- Java Basic Level 9〜Training of for statement〜
- Java Basic Level 10 〜While statement 〜
- Java Basic Swing〜オブジェクト指向〜
- Java Basic Swing Level 2〜オブジェクト指向2〜
- サンプル実装〜コンソールゲーム〜
- Java Basic インターフェース・抽象クラスの作り方
- Java Basic クラスとは〜Step2_1〜
- Java Basic JUnit 〜テストスイートの作り方〜
Git関連
- Java Git clone in Eclipse 〜サンプルの取得〜
- Eclipse Gitリポジトリの取得 〜GitからソースをPullしよう〜
- IntelliJ IDEA Git〜Gitリポジトリからクローン〜
JavaFX関連ページ
- Eclipse SceneBuilderを追加する
- JavaFX SceneBuilder 〜EclipseとSceneBuilder連携~
- JavaFX SceneBuilder〜ボタンにメソッドを割り当てるワンポイント〜
- Java プロコンゲーム 〜見た目の作成(SceneBuilderの使用)〜
ステップアップ関連ページ一覧
- Java 初めてでも大丈夫〜ステップアッププログラミングのススメ〜
- ステップアッププログラミング〜Java FxでHelloWorld解説〜
- Java StepUpPrograming〜JavaFX で四則計算〜
- Java StepUpPrograming〜JavaFXで画面切り替えを作る1〜
- Java StepUpPrograming〜JavaFXで画面切り替え2ボタン作成〜
- Java StepUpPrograming〜JavaFXで画面切り替え3アクション〜
- Java StepUpPrograming〜JavaFXで画面切り替え4Pane切り替え〜
- Java StepUpPrograming〜JavaFXで画面切り替え5WebEngine
JavaFX + ND4Jで機械学習準備
- JavaFX + ND4J〜数学への挑戦1:ND4Jのインストール〜
- JavaFX + ND4J〜数学への挑戦2: 行列の計算〜
- Java + ND4J 〜数学への挑戦3: ベクトル(配列)の作成方法〜
オブジェクト指向関連ページ
- [オブジェクト指向の概念1〜OracleDocのチュートリアル1〜](https://zenryokuservice.com/wp/2019/10/301. /%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e6%8c%87%e5%90%91%e3%81%ae%e6%a6%82%e5%bf%b5-%e3%80%9coracledoc%e3%81%ae%e3%83%81%e3%83%a5%e3%83%bc%e3%83%88%e3%83%aa%e3%82%a2%e3%83%ab%ef%bc%91/)
- オブジェクト指向の概念2〜クラスとは〜