将int数组中断为流

li-*_*raz 0 java java-8 java-stream

我上课了

public class Targets {
    public int[] miniTargets;

    public Targets(int t) {
        miniTargets = new int[t];
        for (int i = 0; i < t; i++) {
            miniTargets[i] = t;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

而且我想要计算miniTargetsTargets收藏的数量,但我坚持flatMap:

public class App {
    public static void main(String[] args) {
        List<Targets> lst = new ArrayList<Targets>();
        lst.add(new Targets(5));
        lst.add(new Targets(15));
        lst.add(new Targets(25));

        int cnt = (int)lst.stream().map(tg -> tg.miniTargets).flatMap(...).count()
        System.out.println(cnt);
    }
}
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 5

如果你想要miniTargets数组的总长度:

int cnt = lst.stream()
             .mapToInt(tg -> tg.miniTargets.length)
             .sum();
Run Code Online (Sandbox Code Playgroud)

如果你想要一个包含miniTargets的IntStream:

IntStream minis = lst.stream()
                     .flatMapToInt (tg -> IntStream.of(tg.miniTargets));
Run Code Online (Sandbox Code Playgroud)

  • @ li-raz int流包含什么?miniTargets阵列的所有元素? (2认同)