みなさん、こんちは!!副業でウェブデザインナーをしながらエンジニアを目指している51です。
今日は、JavaのArrayListについてアウトプットをしていきます。
ArrayListとは?
ArryListとは、リストインタフェースを実装したコレクションクラスです。
ArrayListは、配列を扱うような感覚で扱えます。
ArrayListと配列は別物
注意点としては、配列とは若干の違いがあります。
- 配列 = 要素数が決まっている。
- ArrayList = 要素数が決まっていない。
- ArrayListは、プリティブ型(int, booleanなど)を入れられない。
以下のListメソッドを使用します
メソッド | 説明 |
add | リストに値を追加 |
addAll | リストにリストを追加 |
set | リストの値を変更 |
get | リストの値を取得 |
size | リストの要素数を取得 |
indexOf | リストから値の要素番号を取得 |
subList | リストから範囲を指定してシャローコピー |
contains | リストに値が含まれているか確認する |
remove | リストから指定した要素の値を削除する |
distinct | リストから重複する値を削除 |
clone | リストをコピー |
clear | リストを空にする |
いっぱいありますね・・・。
使用するクラス
javaではコレクションを使用するにあったてクラスをインポートする必要があります。
以下が主にArrayListで使用するクラスとなります。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.steam.Collectors;
ArrayListの基本的な書き方
package パッケージ名
public class クラス名 {
ArrayList<データ型名> 変数名 = new AllayList<データ型名>();
変数名.add(追加する要素);
変数名.add(追加する要素);
変数名.add(追加する要素);
}
}
なお、参照名のデータ型名の閉じ側の<>は省略可能。
例
ArrayList<データ型名> 変数名 = new ArrayList<データ型名>();
ArrayList<string> 変数名 = new ArrayList<>(); //のように
記述例
package sample;
import java.util.ArrayList; //コレクションクラスをインポート
public class Sample {
public static void main(String[] args) {
//リストを作成
ArrayList<String> hello = new ArrayList<>();
//値を追加
hello.add("こんにちは");
hello.add("おはよう");
hello.add("こんばんは");
System.out.println(hello);
}
}
出力結果
[こんにちは, おはよう, こんばんは]
これで、ArrayListの基本はできました。
けでも、よ・・・・・・・。
やっぱり初学者は、どう使うの?ってなりますよね?
では、前回と同じように51式アウトプット(日常をプログラミング化)をやっていきます。
GOLEM WORKS
![](data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==)
![](https://golem-works.com/wp-content/uploads/2023/11/名称未設定のデザイン-9.png)
初心者のためのプログラミング学習:日常生活をコードに変える方法
初学者が直面するプログラミングの疑問に対処する方法を探っています。日常生活をJavaコードに変換するユニークなアプローチを通じて、基本的なプログラミング概念の理解を…
今回は、日常というより簡単なゲームで作っていきます。
ロジックは、こうです。
- 今回の構成は、モンスターの出現、勇者の攻撃、モンスターの反応で構成
- 勇者の攻撃値によって、悶絶、挑発、反撃のパターンを作成。
- 魔物の攻撃がクリティカルだった場合、勇者が倒れるパターンも作成。
以上のメソッドを共有しないといけないので以下のように構成
- 出現した魔物、出力した攻撃値、を全メソッドで固定しないといけないのでフィールド化
- 勇者の攻撃値によって分岐をif文で作成
出力される結果は
- 魔物が出現
- 勇者の攻撃
- ランダムで攻撃値が決定
- 攻撃値によって分岐が発生
package monster;
import java.util.ArrayList; //コレクションクラスをインポート
public class Monster {
//今回はランダムメソッドを使いまわすために、フィールドクラスを用意します
//モンスターの名前のリスト
private static ArrayList<String> monsterName = new ArrayList<>();
//モンスターをランダムで出現させる
private static int monsterIndex;
//出現したモンスターを固定する変数
private static String monsterA;
public static void main(String[] args) {
//メソッドを宣言
monsterName();
showRandomMonster();
player();
}
private static void monsterName() {
//モンスターのリスト用意
monsterName.add("スライム");
monsterName.add("アンクルホーン");
monsterName.add("ケンタウロス");
monsterName.add("彷徨うよろい");
monsterName.add("マミー");
}
private static void showRandomMonster() { //モンスターがランダムに出現するメソッド
monsterIndex = (int)(Math.random() * monsterName.size()); //中の要素でランダムに出力
monsterA = monsterName.get(monsterIndex); //出現したモンスターを変数化
System.out.println(monsterA + "が現れた");
}
private static void player() { //勇者の攻撃メソッド
System.out.println("勇者の攻撃");
//勇者の攻撃値を作成
int attack = (int)(Math.random() * 100 + 20); //最低攻撃力を20以上に設定し、ランダムな数値で攻撃値を出力
//魔物の反撃値を作成
int attack2 = (int)(Math.random() * 80 + 10);
System.out.println(attack + "のダメージ"); //勇者の攻撃値を出力
//ここからパターンを作る
if( attack > 100) { //勇者の攻撃が100以上なら
System.out.println("会心の一撃!");
System.out.println(monsterA + "は悶絶した!");
} else if ( attack < 50 ) { //勇者の攻撃が50以下なら
System.out.println("うまく当たらなかった");
System.out.println(monsterA + "はニヤリと笑った");
} else { //通常値ならモンスターが反撃
System.out.println(monsterA + "の反撃");
System.out.println( "勇者は" + attack2 + "のダメージを受けた");
if( attack2 > 80) { //更に魔物の攻撃が80以上だった場合を追加
System.out.println("勇者は膝をついた");
}
}
}
パターン1
スライムが現れた
勇者の攻撃
74のダメージ
スライムの反撃
勇者は69のダメージを受けた
パターン2
ケンタウロスが現れた
勇者の攻撃
21のダメージ
うまく当たらなかった
ケンタウロスはニヤリと笑った
パターン3
スライムが現れた
勇者の攻撃
57のダメージ
スライムの反撃
勇者は81のダメージを受けた
勇者は膝をついた
パターン4
彷徨うよろいが現れた
勇者の攻撃
117のダメージ
会心の一撃!
彷徨うよろいは悶絶した!
成功です!!
それぞれ、狙い通りのパターンが出力されました。ここまで読んでくれてありがとうございます。
面白かったら、Xのフォローをして下さいね!!
それでは、また。。。