You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
通常我们在写业务的时候,有很多数据并不需要每次都去查数据库或者redis,所以会在服务启动的时候,将数据加载到堆内存,通常我们会在数据库会读出一个列表,而很多时候我们读信息都是根据主键去查,所以就需要List to Map的操作,这个用Stream API 是非常方便的。
public class PrizePO{
private Long prizeId;
private String prizeName;
private Long activityId;
private Integer sequnce;
private Integer price;
//....other
//getter ...
public Long getPrizeId(){return prizeId;}
}
Java8 中的新特性提供了Stream的API,Stream顾名思义,就是流,也就是说我们可以流式处理java中的集合类了,用传统的方式可能对集合的一个或者多个操作要写很多额外的代码,而stream只需要一行搞定,正是个原因,你会发现stream通常会出现在各大it问答网站的“一行实现xxxx”的问题中。Stream 在相对与传统的集合操作方式来说确实有性能损失,除了对性能要求特别高的业务外,从代码简洁可维护性的角度看,还是非常推荐使用的。
Stream 中的API分两种 一种是intermediate(中间操作),另外一种是 terminal (终止操作), 从collection.stream()开始,可以进行多次的intermediate的api调用,就像流一样,从一端一直流到另外一端,这个水管不会堵住,也不会往回流。terminal操作是stream的终止操作,也是流开始处理的调用起点。换个角度说就是,intermediate的api调用只不过是在构造流处理器,好比在给流接水管,这个时候水龙头还没开阀门。当我们执行一个terminal 操作的时候,开水阀,开始接水处理。也就是可以认为我们在一行执行的stream操作,其实只会执行一个O(N)复杂度的算法。
The text was updated successfully, but these errors were encountered: