可变参数&Stream流

1可变参数(参数类型...变量名)

  1. 什么是可变参数?

    参数个数可变的参数

  2. 有啥用?

    解决方法仅仅因为参数个数不同而复写的冗余性

  3. 使用注意

    • 方法中的可变参数只能有一个

    • 方法的参数有多个时,可变参数必须放在最后

2.Stream流

作用

  • 简化代码的书写

  • 延迟执行,节省资源,提高效率

2.1获取方法

  1. 单列集合

    集合对象.Stream

  2. 双列集合

    通过keySet或者entrySet获取一个集合,再获取Stream流

  3. 数组

    Arrays.Stream(数据对象);

  4. 同种数据类型的多个数据

    Stream.of(数据)

2.2中间方法

方法作用
.filter(判断条件)用来过滤流中的数据,是一个延迟方法(startwith)(返回值类型仍然是流类型,其实是布尔型,true留,false删)
limit(long n)截取前n个
skip跳过前n个
Stream.concat(stream01,stream02)合并两个流,是一个静态方法
distinct去除流中重复数据
sorted对数据自然排序
sorted(Comparator<T>c)比较器排序

2.3终结方法

方法名作用
forEach遍历流中数据
long count()获取流中元素的个数

2.4收集方法

collect(Collector collector) 返回新的流对象将流中数据收集到集合中(toList&toSet&toMap)
ArrayList <String> list=new ArrayList<>();
        Collections.addAll(list,"张无忌","张三丰","张翠山","张良","谢广坤","谢广坤");
       //filter,forEach
        list.stream().filter(s->s.startsWith("张"))
                .filter(s->s.length()==3)
                .forEach(s-> System.out.println(s));
       //limit
        list.stream().limit(2).forEach(s-> System.out.println(s));
       //skip
        list.stream().skip(4).forEach(s-> System.out.println(s));
       //定义第二个集合配合下面操作
      ArrayList<String>list1= new ArrayList<>();
        list1.addAll(list);
       //concat
        Stream.concat(list.stream(),list1.stream()).forEach(s-> System.out.println(s));
       //distinct
        list.stream().distinct().forEach(s-> System.out.println(s));
       //count
        System.out.println( list.stream().distinct().count());
        //toList
        List<String>list2=list.stream().filter(s->s.length()==3).collect(Collectors.toList());
        list2.forEach(s-> System.out.println(s));
        //toSet
        Set<String>set=list.stream().filter(s->s.length()==3).collect(Collectors.toSet());
        set.forEach(s-> System.out.println(s));
        //toMap
       ArrayList<String>list=new ArrayList<>();
        list.add("张三,23");
        list.add("李四,24");
        list.add("王五,25");
       Map<String,Integer>map= list.stream().filter(s->Integer.parseInt(s.split(",")[1])>=24
        ).collect(Collectors.toMap(
                s->s.split(",")[0],
                s->Integer.parseInt(s.split(",")[1])
        ));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值