オブジェクトのリストをArrayList<ArrayList<String>>に変換する

オブジェクト(今回はPersonオブジェクト)のリストを Personオブジェクトのプロパティ文字列のリストに変換する。 (Personはnameとageのプロパティを持つ)

public class ServiceClass {

    private int cnt;
    {
        cnt = 1;
    }

    public void hoge() {

        Person p1 = new Person("taro", 5);
        Person p2 = new Person("taro", 10);
        Person p3 = new Person("taro", 15);
        Person p4 = new Person("taro", 20);

        List<Person> list = new ArrayList<>();
        list.add(p1);
        list.add(p2);
        list.add(p3);
        list.add(p4);

        list.stream().map(convertToArray()).forEach(System.out::println);

    }

    /**
    * Functionオブジェクト.
    * PersonをArrayListへ変換する
    * @return
    */
    private Function<Person, ArrayList<String>> convertToArray() {
        return p -> {
            ArrayList<String> list = new ArrayList<>();
            list.add(String.valueOf(cnt)); //連番を入れる
            list.add(p.getName());
            list.add(String.valueOf(p.getAge()));
            cnt++;
            return list;
        };
    }

}

で、hoge()を実行すると、こうなる。

[1, taro, 5]
[2, taro, 10]
[3, taro, 15]
[4, taro, 20]

今回の件とは関係ないけど、 初期化子とかよくわかんないんだよなぁ・・・