java流映射对象数据成员到int列表

时间:2018-09-28 07:58:58

标签: java java-stream

我需要按顺序将A.a和A.b放入一个int列表:

class A {
    int a;
    int b;
}
A a = new A();
a.a = 1;
a.b = 2;
List<A> list = Arrays.asList(a);
List<Integer> intList = list.stream().map(?).collect(Collectors.toList());
assert intList.equals(Arrays.asList(1,2));

如何按流执行此操作?以及如何反向执行此操作?

我的意思是“反向”是根据List<A>创建List<Integer>,因为示例代码是根据List<Integer>创建List<A>的。抱歉,简短。

2 个答案:

答案 0 :(得分:2)

只需创建StreamA的整数flatMap的{​​{1}},以便Stream的整数成为外部{{1}的一部分}。

A anA

编辑
您也asked则相反:

Stream

这意味着类 List<Integer> intList = list.stream() .flatMap(anA -> Stream.of(anA.a, anA.b)) .collect(Collectors.toList()); 中的构造函数:

  IntStream.range(0, intList.size() / 2)
   .mapToObj(i -> new A(intList.get(2*i), intList.get(2*i+1)))
   .collect(Collectors.toList());

快速测试:

A

输出为:

A(int a, int b) {
    this.a = a;
    this.b = b;
}

答案 1 :(得分:0)

FULL OUTER JOIN