[Java基础]Stream流的常见中间操作方法

Posted Wecccccccc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Java基础]Stream流的常见中间操作方法相关的知识,希望对你有一定的参考价值。

在这里插入图片描述

代码如下:

package StreamTest;

import java.util.ArrayList;

public class StreamDemo02 {
    public static void main(String[] args)
    {
        ArrayList<String> list = new ArrayList<String>();

        list.add("Tom");
        list.add("Bom");
        list.add("jack");
        list.add("张无忌");
        list.add("张敏");
        list.add("张曼玉");

        //需求1:把list集合中以张开头的元素在控制台输出

//        list.stream().filter((String s)->{return s.startsWith("张");}).forEach(System.out::println);

        list.stream().filter(s->s.startsWith("张")).forEach(System.out::println);

        System.out.println("--------------------------");
        //需求2:把list集合中长度为3的元素在控制台输出

        list.stream().filter(s->s.length()==3).forEach(System.out::println);
        System.out.println("--------------------------");
        //需求3:把list集合中以张开头的,长度为3的元素在控制台输出

        list.stream().filter(s->s.startsWith("张")).filter(s->s.length()==3).forEach(System.out::println);


    }
}

在这里插入图片描述

代码如下:

package StreamTest;

import java.util.ArrayList;

public class StreamDemo03 {
    public static void main(String[] args)
    {
        ArrayList<String> list = new ArrayList<String>();

        list.add("Tom");
        list.add("Bom");
        list.add("jack");
        list.add("张无忌");
        list.add("张敏");
        list.add("张曼玉");

       //需求1:取前3个数据在控制台输出
        list.stream().limit(3).forEach(System.out::println);
        System.out.println("-----------------------------");
        //需求2:跳过3个元素,把剩下的元素在控制台输出
        list.stream().skip(3).forEach(System.out::println);

        System.out.println("-------------------------------");
        //需求3:跳过2个元素,把剩下的元素中前2个在控制台输出

        list.stream().skip(2).limit(2).forEach(System.out::println);


    }
}

在这里插入图片描述

代码如下:

package StreamTest;

import java.util.ArrayList;
import java.util.stream.Stream;

public class StreamDemo04 {
    public static void main(String[] args)
    {
        ArrayList<String> list = new ArrayList<String>();

        list.add("Tom");
        list.add("Bom");
        list.add("jack");
        list.add("张无忌");
        list.add("张敏");
        list.add("张曼玉");

      //需求1:取前4个数据组成一个流
        Stream<String> s1 = list.stream().limit(4);
        //需求2:跳过2个数据组成一个流
        Stream<String> s2 = list.stream().skip(2);
        //需求3:合并需求1和需求2得到的流,并把结果在控制台输出
       Stream.concat(s1,s2).forEach(System.out::println);
       

    }
}
package StreamTest;

import java.util.ArrayList;
import java.util.stream.Stream;

public class StreamDemo04 {
    public static void main(String[] args)
    {
        ArrayList<String> list = new ArrayList<String>();

        list.add("Tom");
        list.add("Bom");
        list.add("jack");
        list.add("张无忌");
        list.add("张敏");
        list.add("张曼玉");

      //需求1:取前4个数据组成一个流
        Stream<String> s1 = list.stream().limit(4);
        //需求2:跳过2个数据组成一个流
        Stream<String> s2 = list.stream().skip(2);
        //需求4:合并需求1和需求2得到的流,并把结果在控制台输出,要求字符串元素不能重复
        Stream.concat(s1,s2).distinct().forEach(System.out::println);


    }
}



在这里插入图片描述

代码如下:

package StreamTest;

import java.lang.reflect.Array;
import java.util.ArrayList;

public class StreamDemo05 {
    public static void main(String[] args)
    {
        ArrayList<String> list = new ArrayList<String>();

        list.add("linqinxia");
        list.add("baobo");
        list.add("jack");
        list.add("zhangmanyu");
        list.add("tangbohu");
        list.add("mike");

        //需求1:按照字母顺序把数据在控制台输出

        list.stream().sorted().forEach(System.out::println);

        System.out.println("----------------------------------");
        //需求2:按照字符串长度把数据在控制台输出

        list.stream().sorted((s1,s2)->{
            int num = s1.length()-s2.length();
            int num1 = num==0?s1.compareTo(s2):num;
            return num1;
        }).forEach(System.out::println);

    }
}

在这里插入图片描述

代码如下:

package StreamTest;

import java.util.ArrayList;

public class StreamDemo06 {
    public static void main(String[] args)
    {
        ArrayList<String> list = new ArrayList<String>();

        list.add("10");
        list.add("20");
        list.add("30");
        list.add("40");
        list.add("50");

//        list.stream().map(s->Integer.parseInt(s)).forEach(System.out::println);
        list.stream().map(Integer::parseInt).forEach(System.out::println);
        System.out.println("--------------------------");
        list.stream().mapToInt(Integer::parseInt).forEach(System.out::println);
        //int sum()返回此流元素的总和,该方法只在IntStream
        int result = list.stream().mapToInt(Integer::parseInt).sum();
        System.out.println(result);
    }
}

以上是关于[Java基础]Stream流的常见中间操作方法的主要内容,如果未能解决你的问题,请参考以下文章

乐字节-Java8新特性-接口默认方法之Stream流(下)

java 8 Stream(流)

Java8新特性Stream流的使用

Java8新特性Stream流的使用

Java8新特性Stream流的使用

Java8新特性Stream流的使用