文字列データのファイルを作成するプログラムを書いてみました。
データの条件
・文字数指定(今回は4文字)
・重複しない(DB上の制約)
・必要なデータ数:1000件(最大で45万件近くのデータを作成可能)
数十万件のテストデータを手作業では作れないのでテストのために再度PGを書くということです
やっていることをざっくり紹介すると
・AAAA , AAAB , AAAC...ZZZZまでループ処理によって配列の値を変えてリストを作成
・リストをファイルに書き込み出力
とこんな感じです。
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
public class make16 {
public static void main(String[] args) {
String filePath = ("/Users/kuma/opt/出力テストデータ/testdata.txt");//出力先パスとファイル名を入力
String[] dataList = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q",
"R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
int num = 26;
List<String> makeList = new ArrayList<>();
int cnt = 1000;// 作成データ数
try {
FileWriter file = new FileWriter(filePath);
PrintWriter pw = new PrintWriter(new BufferedWriter(file));
check: for (int i = 0; i < num; i++) {
String[] make = { "0", "0", "0", "0" };
make[0] = dataList[i];
for (int j = 0; j < num; j++) {
make[1] = dataList[j];
for (int k = 0; k < num; k++) {
make[2] = dataList[k];
for (int g = 0; g < num; g++) {
make[3] = dataList[g];
String data = String.join("", make); // 以下最終ループ処理
makeList.add(data);
if (makeList.size() == cnt) {
break check;
}
}
}
}
}
System.out.println("データ数:" + makeList.size());
System.out.println("出力先:" + filePath);
for (String str : makeList) {
pw.println(str); //書き込み
}
pw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
ハイっ!
無事出力されました〜
多重ループの停止:ラベル付きbreak
多重ループの最初に『ラベル名:』
break処理部に 『break ラベル名;』
こうすることで多重ループを抜けること可能