[英]Java8 Lambda can I generate new list of object
我想知道有没有办法减少这个方法,因为唯一改变的是获取值的计数器。
List<Vo> response = daoImpl.getresult(query).stream.map(
t-> new Vo( t.get(0,Object.class),
t.get(1,Object.class),
t.get(2,Object.class),
t.get(3,Object.class),
t.get(4,Object.class),
t.get(5,Object.class),
t.get(6,Object.class), new vo2(
t.get(7,Object.class),
t.get(8,Object.class)
))).collect(Collectors.toList());
我的课 Vo
Public class Vo(){
private Object param1;
private Object param2;
private Object param3;
private Object param3;
private Object param4;
private Object param5;
private Object param6;
private Vo2 info;
--Getter and setter
}
我的课 Vo2
Public class Vo2 (){
private Object param7;
private Object param8;
--Getter and setter
}
get方法属于dao class,它返回一个元组类型的列表,该方法获取结果元组中指定的元素position的值,第一个position为0
我想知道是否可以使用 IntStream 来减少代码。
我尝试了,但我不知道构造函数如何做,go 从 position 0 到 6 我属于 object,从 7 到 8 是另一个
List<Tuple> list =daoImpl.getresult(query);
list.stream().map(v-> new Vo(IntStream.range(0,6).mapToObj(h-> v.get(h,Object.class)))). collect(Collectors.toList());
根据我对你想要什么的解释
t.get
创建了两个 arrays 的对象。Vo
class 构造函数的参数之一。Vo2
class 构造函数的参数。Vo2
class 将是Vo
class 构造函数的参数二。Vo
object。您可能必须在构造函数中对 arrays 进行一些转换,并迭代 arrays 以分配各个字段(或者将它们保留为 arrays 可能更容易)。
List<Vo> response = daoImpl.getresult(query).stream
.map(t -> new Object[][]{
// create objecsts for 0 thru 6
IntStream.rangeClosed(0,6)
.mapToObj(i->t.get(i, Object.class)).toArray(Object[]::new),
// create objects for 7 thru 8
Intstream.rangeClosed(7,8)
.mapToObj(i->t.get(i,Object.class)).toArray(Object[]::new)}).
// create the Vo object
map(ob->new Vo(ob[0], new Vo2(ob[1]))).collect(Collectors.toList());
class Vo {
private Object param0;
private Object param1;
private Object param2;
private Object param3;
private Object param4;
private Object param5;
private Object param6;
private Vo2 info;
public Vo(Object[] objects0Thru6, Vo2 vo2with7and8) {
// do something with these.
}
//--Getter and setter
}
关于什么
List<Vo> response = daoImpl.getresult(query).stream.map(
t-> new Vo(
IntStream.range(0, 9)
.map(i -> t.get(1,Object.class))
.toArray()
))).collect(Collectors.toList());
您可以使用IntStream
生成Vo
的 9 构造函数 arguments。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.