[Java] 63 ネストしたArrayList→2次元配列→CSVファイル

ネストしたArrayListを2次元配列に変換し、CSVファイルにしました。確認のための出力はそのままにしています。

またしても文字列をドットにて分割するところでワナにかかりました。まだ2週間しかたっていないのに情けない。

こういったコードを書くとPythonのありがたさが身に染みます。文字列やリストを簡単に扱える自製ライブラリを作りたくなります。最初のfor文は結構手こずりました。appendを使えると大分違うのですが。出力時にtoStringメソッドを使うのも面倒です。

try文のcatchの直前に波カッコを書くことに違和感があるため、今のところ行が増えるのも構わず分けて書いています。審美的に難ありと思ったのですが、少数派でしょうね。

String[][] raceListConSorts_arrays = new String[raceListConSorts.size()][];
int i = 0;
for (ArrayList<String> ele:raceListConSorts) {
    String print_list = String.format("raceListConSorts リスト%d個目 ",i);
    System.out.println(print_list + ele);

    String[] array = ele.toArray(new String[ele.size()]);
    System.out.println("array " + Arrays.toString(array));

    raceListConSorts_arrays[i] = array;
    i = i + 1;
}

for (String[] ele:raceListConSorts_arrays) {
   	System.out.println("arrays作成後array確認 " + Arrays.toString(ele));
}

// 作成した2次元配列をCSV仕様に変換
List<String> list = Arrays.stream(raceListConSorts_arrays)
    .map(line -> String.join(",",line))
    .collect(Collectors.toList());

// HTMLファイル名からCSVファイル名を作成
String[] filename_split = filename.split(Pattern.quote("."));
System.out.println("filename_split " + filename_split);

String csvname = filename_split[0] + ".csv";
System.out.println("csvname " + csvname);

// CSVファイルを作成
try {
    Files.write(Paths.get(csvname), list, StandardOpenOption.CREATE);
}
catch (IOException e) {
    e.printStackTrace();
}