【问题标题】:How to print a List of Arrays (with elements) using Java 8 Streams? [duplicate]如何使用 Java 8 Streams 打印数组列表(带有元素)? [复制]
【发布时间】:2018-02-22 21:10:32
【问题描述】:
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)]

您能指导我实现这一目标吗?

【问题讨论】:

  • 可以把最后一行改成:intPairs.stream().map(Arrays::toString).forEach(System.out::println);

标签: java java-8


【解决方案1】:

您可以将映射部分更改为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);
}

希望这会有所帮助。

【讨论】:

  • 感谢您回答@arsen-davtyan,它很好地满足了我的目的。但是我有点不情愿在这里使用 List 。相反,我想要这样的解决方案:- {List intPairs = numbers1.stream() .flatMap(i -> numbers2.stream() .filter(j -> (i+j)%3 == 0) 。 map(j -> Arrays.toString(new int[]{i,j}))) .collect(Collectors.toList());}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-03
  • 1970-01-01
相关资源
最近更新 更多