zoukankan      html  css  js  c++  java
  • java 数据类型:Stream流 对象转换为集合collect(Collectors.toList()) ;常用方法count,limit,skip,concat,max,min

    集合对象.stream() 获取流对象,对元素批处理(不改变原集合)

    集合元素循环除了用for循环取出,还有更优雅的方式.forEach

    示例List集合获取Stream对象进行元素批处理

    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @ClassName ArrayListStreamExample
     * @projectName: object1
     * @author: Zhangmingda
     * @description: XXX
     * date: 2021/4/11.
     */
    public class ArrayListStreamExample {
        public static void main(String[] args) {
            List<String> persons = new ArrayList<>();
            persons.add("李一桐");
            persons.add("刘亦菲");
            persons.add("鞠婧祎");
            persons.add("李易峰");
            persons.add("李纯");
            persons.add("李小璐");
            persons.add("李健");
            persons.add("李连杰");
            //
            persons.stream().filter(o -> o.startsWith("李")).filter(o -> o.length() >=3).forEach(System.out::println);
            List<String> liPerson = new ArrayList<>();
            persons.stream().filter(o -> o.startsWith("李")).filter(o -> o.length() >=3).forEach(o -> liPerson.add(o));
            System.out.println(liPerson); // [李一桐, 李易峰, 李小璐, 李连杰]
        }
    }

     常用方法:

    Map映射

    如果需要将流中的元素映射到另一个流中,可以使用 map 方法。
    <R> Stream<R> map(Function<? super T, ? extends R> mapper)
    Function是一个函数式接口,他有一个R apply(T t);方法,可以把T对象转化成R对象。这个就叫做映射。
    • 统计个数Count
    • 获取前几个Limit
    • 跳过前几个Skip
    • 组合concat
    • 最大最小值
      常用方法示例代码:
      import java.util.stream.Stream;
      
      /**
       * @ClassName StreamFuncExample
       * @projectName: object1
       * @author: Zhangmingda
       * @description: XXX
       * date: 2021/4/12.
       */
      public class StreamFuncExample {
          public static void main(String[] args) {
              Stream.of(1,2,3).map(num ->num *2).forEach(System.out::println); //映射输出2、4、6
              long count = Stream.of(1,3,4,5).count(); //统计个数
              System.out.println(count);
              Stream.of(1,2,3,4,5,6).limit(3).forEach(System.out::println);//前三个
              Stream.of(1,2,3,4,5,6).skip(3).forEach(System.out::println);//跳过前三个
              Stream<Integer> num = Stream.of(1,2,3);
              Stream<String> person = Stream.of("张三","李四","王五");
              Stream allStream = Stream.concat(num,person);
              allStream.forEach(System.out::println); //1,2,3, 张三","李四","王五"
              int max = Stream.of(1,2,3,4,5,6).max((num1, num2) -> num1 - num2).get(); //取最大
              System.out.println(max); //6
          }
      }
     

    Stream对象转换为集合

    collect(Collectors.toList())  

    collect(Collectors.toSet())

    collect(Collectors.toMap())

     

    public class StreamCollectCollectorsXXX {
        public static void main(String[] args) {
            Stream<String> persons = Stream.of("张三","李四","王五");
    //        List<String> personList  = persons.collect(Collectors.toList());
    //        Set<String> personSet  = persons.collect(Collectors.toSet());
            Map<String,Integer> personMap  = persons.collect(Collectors.toMap( K ->K, K ->K.length()));
            System.out.println(personMap);
        }
    }

     

  • 相关阅读:
    scrollview嵌套listiview(解决高度问题以及两者滚动冲突问题)
    listview通过onscrollListener实现分页加载
    listview中的checkbox实现全选、反选、删除的功能
    【JavaScript】闭包应用之数据独立
    【JavaScript】闭包应用之数据缓存
    【问题:发现与解决】angularJs指令在dijit控件中的使用
    【转发】:CSS代码重构与优化之路
    写一个简易的富文本
    【html/css】若母div设置了透明度,如何才能使得里面的子div不继承母div的透明度
    【html/css】模态框的实现
  • 原文地址:https://www.cnblogs.com/zhangmingda/p/14645918.html
Copyright © 2011-2022 走看看