快捷搜索: 王者荣耀 脱发

Java------Stream流式编程入门(一)

Java------Stream流式编程入门(一)

Jdk8提供Stream流类库,实现对集合中的数据进行流水线式的处理,应用Stream流类库完成数据处理,进行编程,称为Stream流式编程。 目的:对集合中的数据进行多次连续的处理。

需求:在数组中有一堆字符串,找出长度大于4的字符串,将长度大于4的字符串转成大写字母,遍历输出。 基础写法:

@Test
    public void test1(){
          
   
        String[] strs = new String[]{
          
   "hello","world","hi","com","student"};
        List<String> lits_filter = new ArrayList<>();
        for (int i = 0; i < strs.length; i++) {
          
   
            String str = strs[i];
            if (str.length()>4){
          
   
                lits_filter.add(str);
            }
        }
        List<String> lits_upperCase = new ArrayList<>();
        lits_filter.forEach(x->{
          
   
            String upperCase = x.toUpperCase();
            lits_upperCase.add(upperCase);
        });
        for (String s : lits_upperCase) {
          
   
            System.out.println(s);
        }
    }

此方式需要对数据进行多次遍历。【性能低下】 也可以一次遍历。【多个操作在一个for循环中,代码耦合高,不方便维护】

String[] strs = new String[]{
          
   "hello","world","hi","com","student"};
        List<String> lits_filter = new ArrayList<>();
        for (int i = 0; i < strs.length; i++) {
          
   
            if (strs[i].length()>4){
          
   
                System.out.println(strs[i].toUpperCase());
            }
        }

Stream流实现

@Test
    public void test1(){
          
   
        String[] strs = new String[]{
          
   "hello","world","hi","com","student"};

        //使用Stream流完成上边对字符串的处理需求
        Stream.of(strs).filter(x->x.length()>4).map(x->x.toUpperCase()).forEach(System.out::println);
    }

拆开:

//使用Stream流完成上边对字符串的处理需求
        Stream.of(strs)//创建一个Stream流对象
                .filter(x->x.length()>4)//过滤字符串,找到长度大于4的字符串
                .map(x->x.toUpperCase())//转换大写
                .forEach(System.out::println);//遍历输出

链式编程,每次返回的都是Stream流对象,反复调用。

for循环和Stream流对比

1.for循环是一种外部迭代方式,Stream是在内部迭代不需要程序员干涉。 2.for循环实现了“怎么做”,Stream实现“做什么”,实现了将具体的业务代码和内部遍历的代码完全分离。

经验分享 程序员 微信小程序 职场和发展