java中有类似linq的东西吗_LINQ的Java等价物是什么?

Low Flying P..

7

支持不同的可能性,

鉴于收藏,

Collection testList = new ArrayList<>();

类型,

class Dto

{

private int id;

private String text;

public int getId()

{

return id;

}

public int getText()

{

return text;

}

}

过滤

Java 7

Filter query = CQ.filter(testList)

.where()

.property("id").eq().value(1);

Collection filtered = query.list();

Java 8

Filter query = CQ.filter(testList)

.where()

.property(Dto::getId)

.eq().value(1);

Collection filtered = query.list();

也,

Filter query = CQ.filter()

.from(testList)

.where()

.property(Dto::getId).between().value(1).value(2)

.and()

.property(Dto::grtText).in().value(new string[]{"a","b"});

排序(也适用于Java 7)

Filter query = CQ.filter(testList)

.orderBy()

.property(Dto::getId)

.property(Dto::getName)

Collection sorted = query.list();

分组(也适用于Java 7)

GroupQuery query = CQ.query(testList)

.group()

.groupBy(Dto::getId)

Collection> grouped = query.list();

连接(也可用于Java 7)

鉴于,

class LeftDto

{

private int id;

private String text;

public int getId()

{

return id;

}

public int getText()

{

return text;

}

}

class RightDto

{

private int id;

private int leftId;

private String text;

public int getId()

{

return id;

}

public int getLeftId()

{

return leftId;

}

public int getText()

{

return text;

}

}

class JoinedDto

{

private int leftId;

private int rightId;

private String text;

public JoinedDto(int leftId,int rightId,String text)

{

this.leftId = leftId;

this.rightId = rightId;

this.text = text;

}

public int getLeftId()

{

return leftId;

}

public int getRightId()

{

return rightId;

}

public int getText()

{

return text;

}

}

Collection leftList = new ArrayList<>();

Collection rightList = new ArrayList<>();

可以加入像,

Collection results = CQ.query().from(leftList)

.innerJoin(CQ.query().from(rightList))

.on(LeftFyo::getId, RightDto::getLeftId)

.transformDirect(selection -> new JoinedDto(selection.getLeft().getText()

, selection.getLeft().getId()

, selection.getRight().getId())

)

.list();

表达式

Filter query = CQ.filter()

.from(testList)

.where()

.exec(s -> s.getId() + 1).eq().value(2);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值