需求
对一个集合进行条件过滤,然后计算某个字段值相加后的总数。
/**
* 商家卖家交易实体
*
*/
@Data
public class Trade {
private String instId;//产品ID
private String sz;//交易数量
private String side;//交易方向 buy:买 sell:卖
public Trade() {
}
}
代码
@Test
public void testSumSz(){
List<Trade> tradeS = new ArrayList<>();
Trade trade = new Trade();
trade.setInstId("美的空调");
trade.setSide("buy");
trade.setSz("15");
tradeS.add(trade);
trade = new Trade();
trade.setInstId("格力空调");
trade.setSide("buy");
trade.setSz("32");
tradeS.add(trade);
trade = new Trade();
trade.setInstId("美的空调");
trade.setSide("sell");
trade.setSz("1");
tradeS.add(trade);
trade = new Trade();
trade.setInstId("格力空调");
trade.setSide("sell");
trade.setSz("3");
tradeS.add(trade);
// 过滤side字段值为'buy'的数据,并将交易数量字段‘sz’从String转换为Long类型,然后计算它的总和值。从而得出买入交易总数。
long buySum = tradeS.stream().filter(item -> "buy".equals(item.getSide())).map(item -> Long.valueOf(item.getSz())).mapToLong(Long::longValue).sum();
// 过滤side字段值为'sell'的数据,并将交易数量字段‘sz’从String转换为Long类型,然后计算它的总和值。从而得出卖出交易总数。
long sellSum = tradeS.stream().filter(item -> "sell".equals(item.getSide())).map(item -> Long.valueOf(item.getSz())).mapToLong(Long::longValue).sum();
System.out.println(buySum);
System.out.println(sellSum);
}
结果:
参考:https://www.cnblogs.com/cxxiao/p/12300210.html