Java8Stream流()

  本篇文章为你整理了Java8Stream流()的详细内容,包含有 Java8Stream流,希望能帮助你了解 Java8Stream流。

  Stream流呢,以前我也有所了解,像一些面试题中也出现过,Java8的新特性,有一块就是这个Stream操作集合,而且在看一些项目中也使用的比较多。但总感觉自己学的一知半解,所以今天打算系统的过一下,再巩固巩固。

  Stream是JDK8 API中的新成员,它允许以声明性方式处理集合。

  1、把集合转换为流Stream
 

  2、操作Stream流

  Stream流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作(terminal operation)得到前面处理的结果

  一些常见的中间操作和中止操作

  中间操作(过滤、映射、限制...),可以多个

  
映射(转换)接收一个函数作为参数,这个函数会被应用到每个元素上,并将其映射成为一个新的元素

  Stream

  
Stream不调用终结方法,中间的操作不会执行

  Stream只能调用一次终止操作。得到结果后,不能再次使用这个流。

  下面是一些小demo

  点击查看代码

  

/**

 

   * 过滤集合中不符合条件的元素

   @Test

   public void testfilter(){

   List String stringList = Arrays.asList("abc", "", "bc", "def", "abcd", "", "jkl");

   List String aList = stringList.stream().filter(str - str.contains("a")).collect(Collectors.toList());

   aList.forEach(System.err::println);

   @Test

   public void testDistinct(){

   List String stringList = Arrays.asList("abc", "", "bc", "def", "abcd", "", "jkl","jkl");

   List String distinctStr = stringList.stream().distinct().collect(Collectors.toList());

   distinctStr.forEach(System.out::println);

   //--------------------------------

   Product prod1 = new Product(1L, 1, new BigDecimal("15.5"), "面包", "零食");

   Product prod2 = new Product(2L, 2, new BigDecimal("20"), "饼干", "零食");

   Product prod3 = new Product(2L, 2, new BigDecimal("20"), "饼干", "零食");

   ArrayList Product proList = Lists.newArrayList(prod1, prod2, prod3);

   List Product distinctProList = proList.stream().distinct().collect(Collectors.toList());

   distinctProList.forEach(System.out::println);

   * limit(n)获取流中的前n个元素

   @Test

   public void testLimit(){

   List String stringList = Arrays.asList("abc", "", "bc", "def", "abcd", "", "jkl","jkl");

   List String limitStr = stringList.stream().limit(3).collect(Collectors.toList());

   System.out.println(limitStr);

   * skip(n)

   @Test

   public void testSkip(){

   List String stringList = Arrays.asList("abc", "", "bcd", "def", "abcd", "", "jkl","jkl");

   List String skipStrList = stringList.stream().skip(2).collect(Collectors.toList());

   System.out.println(skipStrList);

   * map() 接收一个函数作为参数,这个函数会被应用到每个元素上,并将其映射成为一个新的元素

   @Test

   public void testMap(){

   List String stringList = Arrays.asList("abc", "", "bcd", "def", "abcd", "", "jkl","jkl");

   List String mapStrList = stringList.stream().map(str - str.concat("_map")).collect(Collectors.toList());

   System.out.println(mapStrList);

   @Test

   public void testSorted(){

   List String stringList = Arrays.asList("abc", "", "bcd", "def", "abcd", "", "jkl","jkl");

   List String sortedStrList = stringList.stream().sorted().collect(Collectors.toList());

   System.out.println(sortedStrList);

   * collect():将流转换为其他形式 list set map

   @Test

   public void testCollect(){

   List String stringList = Arrays.asList("abc", "", "bcd", "def", "abcd", "", "jkl","jkl");

   Set String collectSet = stringList.stream().collect(Collectors.toSet());

   System.out.println(collectSet);

   * 将流中元素反复结合起来得到一个结果

   @Test

   public void testReduce(){

   List String stringList = Arrays.asList("abc", "", "bcd", "def", "abcd", "", "jkl","jkl");

   Optional String reduce = stringList.stream().reduce((acc, item) - {return acc + item;});

   if (reduce.isPresent()) System.out.println(reduce.get());

   * 将流中元素反复结合起来得到一个结果

   @Test

   public void testCount(){

   List String stringList = Arrays.asList("abc", "", "bcd", "def", "abcd", "", "jkl","jkl");

   long count = stringList.stream().count();

   System.out.println(count);

  

 

  以上就是Java8Stream流()的详细内容,想要了解更多 Java8Stream流的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: