配列を初期化するラムダ式 質問する

配列を初期化するラムダ式 質問する

単純なラムダ式を使用して配列またはコレクションを初期化する方法はありますか?

何かのようなもの

// What about this?
Person[] persons = new Person[15];
persons = () -> {return new Person()};

または

// I know, you need to say how many objects
ArrayList<Person> persons = () -> {return new Person()};

ベストアンサー1

確かに、どれほど役に立つかはわかりませんが、確かに実行可能です。

import java.util.*;
import java.util.function.*;
import java.util.stream.*;

public class Test
{
    public static void main(String[] args)
    {
        Supplier<Test> supplier = () -> new Test();
        List<Test> list = Stream
            .generate(supplier)
            .limit(10)
            .collect(Collectors.toList());
        System.out.println(list.size()); // 10
        // Prints false, showing it really is calling the supplier
        // once per iteration.
        System.out.println(list.get(0) == list.get(1));
    }
}

おすすめ記事