• 获取单列集合,双列集合,数组的Stream流对象以及简单操作


    获取流对象

    获取单列集合,双列集合,数组的流对象

    单列集合获取流对象:

    1、java.util.Collection接口中加入了default方法stream()获取流对象,因此其所有实现类均可通过此方式获取流。

    public class StreamTest01 {
        List<String> list = new ArrayList<>();
        Stream<String> stream1 = list.stream();
        Set<String> set = new HashSet<>();
        Stream<String> stream2 = set.stream();
    }
    

    双列集合获取流对象

    2、java.util.Map接口想要获取流,先通过keySet()、values()或entrySet()方法获取键、值或键值对的单列集合,再通过stream()获取流对象。

    public class StreamTest01 {
      Map<String, String> map = new HashMap<>();
      Stream<String> keyStream = map.keySet().stream();
      Stream<String> valueStream = map.values().stream();
      Stream<Map.Entry<String,String>>entryStream = map.entrySet().stream();
    }
    

    数组获取流对象

    数组获取流,使用Stream接口中的的静态方法of(T...values)获取流

    public class StreamTest01 {
      String[] array = {"东邪", "西毒", "南帝", "北丐", "中神通"};
      Stream<String> stream = Stream.of(array);
    }
    

    filter过滤,结果收集(数组)

    /**
     * 需求
     * 过滤:filter、结果收集(数组)
     * 问题:
     * 有如下7个元素黄药师,冯蘅,郭靖,黄蓉,郭芙,郭襄,郭破虏,使用Stream将以郭字开头的元素存入新数组
     */
    public class StremFilterTest_Array {
        public static void main(String[] args) {
            Stream<String> stream = Stream.of("黄药师", "冯蘅", "郭靖", "黄蓉", "郭芙", "郭襄", "郭破虏");
            //使用Stream将以郭字开头的元素存入新数组
            String[] gous = stream.filter(t -> t.startsWith("郭")).toArray(String[]::new);
            System.out.println(gous[0]);
        }
    }
    

    取用前几个:limit、跳过前几个:skip、 forEach: 循环消费

    /**
     * 需求:
     * 已知ArrayList集合中有如下元素{陈玄风、梅超风、陆乘风、曲灵风、武眠风、冯默风、罗玉风},使用Stream
     * 1、取出前2个元素并在控制台打印输出。
     * 2、取出后2个元素并在控制台打印输出
     */
    public class Limit_Skip {
        public static void main(String[] args) {
            ArrayList<String> list = new ArrayList<>();
            list.add("陈玄风");
            list.add("梅超风");
            list.add("陆乘风");
            list.add("曲灵风");
            list.add("武眠风");
            list.add("冯默风");
            list.add("罗玉风");
            list.stream().limit(2).forEach(System.out::println);
            list.stream().skip(list.size() - 2).forEach(System.out::println);
        }
    }
    

    映射:map、 逐一消费:forEach

    /**
     * 需求:
     * 有如下整数1,-2,-3,4,-5
     * 使用Stream取元素绝对值并打印
     */
    public class Map_ForEach {
        public static void main(String[] args) {
            Stream<Integer> stream = Stream.of(1, -2, -3, 4,-5);
            stream.map(Math::abs).forEach(System.out::println);
        }
    }
    

    组合:concat、 结果收集(list)

    /**
     * 需求:
     * 已知数组arr1中有如下元素{郭靖,杨康},arr2中有如下元素{黄蓉,穆念慈},使用Stream将二者合并到List集合
     */
    public class Concat_List {
        public static void main(String[] args) {
            Stream<String> streamA = Stream.of("郭靖", "杨康");
            Stream<String> streamB = Stream.of("黄蓉", "穆念慈");
            List<String> strList = Stream.concat(streamA, streamB).collect(Collectors.toList());
        }
    }
    

    获取并发流

    parallelSteam: 是一个并行流,多管道流

    Stram:是一个单管道的流

    二者区别:parallelSteam的处理效率比Stram的高

    public class ParallelStream {
        public static void main(String[] args) {
            Collection<String> coll = new ArrayList<>();
            Stream<String> parallelStream1 = coll.parallelStream();
            Stream<Integer> parallelStream2 = Stream.of(100, 200, 300, 400).parallel();
        }
    }
    金麟岂能忍一世平凡 飞上了青天 天下还依然
  • 相关阅读:
    [记录]Python2.7使用argparse模块
    [记录]MySQL读写分离(Atlas和MySQL-proxy)
    [记录]Shell中的getopts和getopt用法
    [记录]CentOS搭建SVN服务器(主从同步)
    [记录]Zabbix3.4配置监控Oracle12c的存活状态和表空间使用率
    [记录]一则清理MySQL大表以释放磁盘空间的案例
    [原创]Oracle 12c的备份和恢复策略
    Linux awk用法
    Oracle数据库学习笔记
    oracle无法删除当前连接用户方法
  • 原文地址:https://www.cnblogs.com/Auge/p/11528954.html
Copyright © 2020-2023  润新知