Java-- Stream流

感受stream流

代码

package demo1;

import javax.naming.Name;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class StreamDemo1 {
    public static void main(String[] args) {
        ArrayList<String> list1 = new ArrayList<>();
        list1.add("张强");
        list1.add("张无忌");
        list1.add("周芷若");
        list1.add("赵敏");
        list1.add("张三丰");
        list1.stream().filter(name ->name.startsWith("张"))
                .filter(name ->name.length() ==3).
                        forEach(name -> System.out.println(name));


    }
}

运行效果

Stream流的作用

结合了Lambda表达式,简化集合、数组的操作

使用步骤

1.先得到一条Stream流(流水线),并把数据放上去

2.使用中间方法对流水线上的数据进行操作
3.使用终结方法对流水线上的数据进行操作

代码01

package demo1;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class StreamDemo2 {
    public static void main(String[] args) {
        ArrayList<String> list =new ArrayList<>();
        Collections.addAll(list,"a","b","c","d","e");
        list.stream().forEach(s -> System.out.println(s));
    }
}
运行效果


代码02

package demo1;

import java.util.HashMap;
import java.util.stream.Stream;

public class StreamDemo3 {
    public static void main(String[] args) {
        HashMap<String,Integer> hm = new HashMap<>();
        hm.put("aaa",111);
        hm.put("bbb",222);
        hm.put("ccc",333);
        hm.put("ddd",444);
        //第一种获取stream流
        hm.keySet().stream().forEach(s-> System.out.println(s));
        //第二种获取stream流
        hm.entrySet().stream().forEach(s ->System.out.println(s));
    }
}
运行结果

代码03

package demo1;

import java.util.Arrays;

public class StreamDemo4 {
    public static void main(String[] args) {
        int[] arr1= {1,2,3};
        String[] arr2 ={"a","b","c"};
        Arrays.stream(arr1).forEach(s ->System.out.println(s));
        Arrays.stream(arr2).forEach(s ->System.out.println(s));

    }
}
运行效果

代码04

kage demo1;

import java.util.stream.Stream;

public class StreamDemo5 {
    public static void main(String[] args) {
        Stream.of(1,2,3,4).forEach(s ->System.out.println(s));
        Stream.of("a","b","c").forEach(s ->System.out.println(s));

    }
}
运行效果

stream流的中间方法

 代码

package demo2;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;

public class a2 {
    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<>();
        Collections.addAll(list,"张三-100","王五-200","李四-100");
        list.stream().map(s -> Integer.parseInt(s.split("-")[1]))
                .forEach(s -> System.out.println(s));

    }
}

运行结果

 stream流的终极方法

代码

package demo2;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

public class a3 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list ,"路人甲","张三","李四","王五");
        long count = list.stream().count();
        System.out.println(count);
        String[] arr2 = list.stream().toArray(value -> new String[value]);
        System.out.println(Arrays.toString(arr2));

    }
}

运行效果

收集方法collect

package demo2;

import java.util.*;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class a {
    public static void main(String[] args) {
        ArrayList<String> list =new ArrayList<>();
        Collections.addAll(list,"张三-男-1","李四-男-2","王五-女-3");
        //收集List集合当中男性
        List<String> newlist1 = list.stream()
                .filter(s ->"男".equals(s.split("-")[1]))
                .collect(Collectors.toList());
        System.out.println(newlist1);
        //收集Map集合中的男性
        Set<String> newList2 = list.stream()
                .filter(s ->"男".equals(s.split("-")[1]))
                .collect(Collectors.toSet());
        System.out.println(newList2);
        
    }
}

总结

1.Stream流的作用
结合了Lambda表达式,简化集合、数组的操作
2.Stream的使用步骤
获取Stream流对象
使用中间方法处理数据
使用终结方法处理数据
3.如何获取Stream流对象
单列集合:collection中的默认方法stream
双列集合:不能直接获取
数组:Arrays工具类型中的静态方法stream一堆零散的数据:Stream接口中的静态方法0
4.常见方法
中间方法:
filter, limit, skip, distinct, concat, map

终结方法:
forEach, count, collect

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值