はじめに
JAVAにおいて、
「クラス型の要素を格納したArrayListから、それぞれの要素のフィールドのデータを順に取り出す」
という処理を、メソッドとして定義する方法がわからなかった。
解決方法を備忘録として書き記しておく。
問題となったこと・その解決の鍵になったこと
- メソッドの仮引数にArrayListを指定する方法が分からない
-> ArrayList<型> 変数名
とする。
- for文の中で、クラスのフィールドを呼び出す方法が分からない
-> リストの変数名.get(i).getName()
などとする。
環境
OpenJDK 13 (dokojavaの利用)
具体例
自販機のシステムを模したソースコードで、
- Main.java(Mainメソッドと今回問題となったメソッドを含むクラス)
- Drink.java(飲み物を示すクラス)
の2ファイルで構成される。
Main.java
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
var drinklist = new ArrayList<Drink>();
// Drinkクラスを格納するArrayListに飲み物を追加
Drink coffee = new Drink("コーヒー", 1, 130);
drinklist.add(coffee);
Drink water = new Drink("水", 2, 100);
drinklist.add(water);
// 今回問題となったメソッドの呼び出し
displayProduct(drinklist);
}
// メソッドを定義
// ArrayListからDrinkクラスのフィールドを順に取り出す
public static void displayProduct(ArrayList<Drink> drinklist) {
for(Drink drink : drinklist) {
System.out.println(drink.getNumber() + "." + drink.getName()
+ drink.getPrice() + "円");
}
}
}
Drink.java
public class Drink {
private String name;
private int number;
private int price;
public String getName() {
return this.name;
}
public int getNumber() {
return this.number;
}
public int getPrice() {
return this.price;
}
public Drink(String name, int number, int price){
this.name = name;
this.number = number;
this.price = price;
}
}
出力結果
1.コーヒー130円
2.水100円