如何使用Java 8 Streams打印数组列表(带元素)?

时间:2017-09-14 02:45:43

标签: java java-8

public static void main(String[] args) {
    List<Integer> numbers1 = Arrays.asList(1,2,3);
    List<Integer> numbers2 = Arrays.asList(3,4);

    List<int[]> intPairs = numbers1.stream()
            .flatMap(i -> numbers2.stream()
                    .filter(j -> (i+j)%3 == 0)
                    .map(j -> new int[]{i,j}))
                    .collect(Collectors.toList());

    intPairs.stream().forEach(System.out::println);
}

对于上面的代码,我输出为:

[I@214c265e
[I@448139f0

但我的期望是获得[(2, 4), (3, 3)]

你能指导我实现这个目标吗?

1 个答案:

答案 0 :(得分:4)

您可以将地图部分更改为List,而不是使用int[]

....
.map(j -> Arrays.asList(i,j)))
....

输出如下:

[2, 4]
[3, 3]

以下是完整的示例:

public static void main(String[] args) {
    List<Integer> numbers1 = Arrays.asList(1,2,3);
    List<Integer> numbers2 = Arrays.asList(3,4);

    List<List<Integer>> intPairs = numbers1.stream()
            .flatMap(i -> numbers2.stream()
                    .filter(j -> (i+j)%3 == 0)
                    .map(j -> Arrays.asList(i,j)))
                    .collect(Collectors.toList());
    intPairs.stream().forEach(System.out::println);
}

希望这会有所帮助。