Java教程

【金秋打卡】第九天+Lambda的集合

本文主要是介绍【金秋打卡】第九天+Lambda的集合,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

课程名称:一课掌握Lambda表达式语法及应用

课程章节:第四章第四节

主讲老师:大牧莫邪


课程内容:

8:Stream操作集合中数据

public class test4 {
    public static void main(String[] args) {
//        1:批量数据
//        多个数据
        Stream stream = Stream.of("admin","hh","oh");

//        数组
        String[] arr = {"arr","hh","tom"};
        Stream stream1 = Arrays.stream(arr);

//        列表
        List<String> list = new ArrayList<>();
        list.add("admin");
        list.add("hh");
        Stream stream2 = list.stream();

//        集合
        Set<String> set = new HashSet<>();
        set.add("admin");
        set.add("hh");
        Stream stream3 = set.stream();

//        Map
        Map<Object, Object> map = new HashMap<>();
        map.put("admin", "admin");
        map.put("hh", "hh");
        Stream stream4 = map.entrySet().stream();

//        2:Stream对于基本数据类型的功能封装
//        IntStream.of(new int[] {10, 20, 30}).forEach(System.out::println);
//        IntStream.range(1, 5).forEach(System.out::println);   //不包含最后一个元素
//        IntStream.rangeClosed(1, 5).forEach(System.out::println);   //包含最后一个元素

//        3:Stream对象 ->  转换得到指定类型
//        数组
//        Object[] objx = stream.toArray(String[]::new);   //stream一旦被使用,就会闭合,没有数据了,所以需要注释

//        字符串
//        String str = stream.collect(Collectors.joining()).toString();
//        System.out.println(str);

        //列表
//        List<String> streamList = (List<String>) stream.collect(Collectors.toList());
//        System.out.println(streamList);
        //集合
//        Set<String> streamSet = (Set<String>) stream.collect(Collectors.toSet());
//        System.out.println(streamSet);
        //map
        Map<String,String> streamMap = (Map<String, String>) stream.collect(Collectors.toMap(x->x, y->"value:"+y));
//        System.out.println(streamMap);

//        Stream中常见的API操作
        List<String> accountList = new ArrayList<>();
        accountList.add("admin");
        accountList.add("hh");
        accountList.add("bb");

        //map() 中间操作,map()方法接收一个Functional接口
//        accountList = accountList.stream().map(x->"hero:" + x).collect(Collectors.toList());  //list转为Map,再转为list

        //filter() 添加过滤条件,过滤符合条件的用户
//        accountList = accountList.stream().filter(x-> x.length() >=5).collect(Collectors.toList());

        //ForEach 增强型循环
//        accountList.forEach(x-> System.out.println("forEach->" + x));

        //peek() 中间操作:迭代数据完成数据的依次处理
        /*accountList.stream()
                .peek(x-> System.out.println("peek 1:" + x))
                .peek(x-> System.out.println("peek 2:" + x))
                .forEach(System.out::println);*/
//        accountList.forEach(System.out::println);

        // Stream中对于数字运算的支持
        List<Integer> intList = new ArrayList<>();
        intList.add(10);
        intList.add(20);
        intList.add(30);
        intList.add(40);
        intList.add(50);
        intList.add(50);
        intList.add(50);

        //skip() 中间操作,有状态(对后续的数据是有影响的),跳过部分数据
//        intList.stream().skip(3).forEach(System.out::println);  //前三个数据被忽略,后续数据会被提取

//        limit() 中间操作,有状态,限制输出数据量
//        intList.stream().skip(3).limit(1).forEach(System.out::println);

//        distinct 中间操作,有状态,剔除重复数据
//        intList.stream().distinct().forEach(System.out::println);
//        sorted() 中间操作,有状态,排序
//        max()  获取最大值
        Optional optional = intList.stream().max((x, y)-> x-y);
//        System.out.println(optional.get());
//        min()  获取最小值
        Optional optional2 = intList.stream().min((x,y)-> x-y);
        System.out.println(optional2.get());
//        reduce() 合并处理数据
        Optional optional1 = intList.stream().reduce((sum, x)-> sum + x);
//        System.out.println(optional1.get());
    }
}



课程收获:


这节课主要学习了Lambda中的集合及其用法,只能说,方便,是真的方便,之前从来没有发现这个优势,之前只是感觉Lambda的方式很标新立异,学到这里感觉这东西很牛!需要好好复习!


加油了,同志们


https://img3.sycdn.imooc.com/63578afb0001be9c16501057.jpg




这篇关于【金秋打卡】第九天+Lambda的集合的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!