Java8Stream

判断一个操作是惰性求值还是及早求值很简单:只需看它的返回值。如果返回值是 Stream,那么是惰性求值。其实可以这么理解,如果调用惰性求值方法,Stream 只是记录下了这个惰性求值方法的过程,并没有去计算,等到调用及早求值方法后,就连同前面的一系列惰性求值方法顺序进行计算,返回结果。

通用形式为:

Stream.惰性求值.惰性求值. ... .惰性求值.及早求值。

Stream是java.util.stream的一个类。

public class StudyStream {

   private List<HeroEntity> list;

   @Before
   public void init(){
      list = new ArrayList<>();
      list.add(new HeroEntity("影魔","敏捷"));
      list.add(new HeroEntity("QOP","智力"));
      list.add(new HeroEntity("德鲁伊","敏捷"));
      list.add(new HeroEntity("矮人狙击手","敏捷"));
      list.add(new HeroEntity("幻影刺客","敏捷"));
      list.add(new HeroEntity("撼地神牛","力量"));
   }

   @Test
   public void filterAGI() throws InterruptedException {
      /**
       * List对象调用stream()将会放回一个Stream<E>对象,
       * Steam对象调用filter(lambda表达式)会返回一个Steam对象,
       * Steam对象.collect(Collectors.toList())返回一个List<E>
       */
      List<HeroEntity> listAGI = list.stream()
            .filter(l -> l.getProperty().equals("敏捷"))
            .collect(Collectors.toList());

      listAGI.forEach(l -> System.out.println(l.toString()));
   }
}

参考来源:“https://www.cnblogs.com/snowInPluto/p/5981400.html

猜你喜欢

转载自www.cnblogs.com/theRhyme/p/9133773.html