Java——Stream

Stream

java8新增

  • 是数据渠道,用来操作数据源所产生的元素序列
  • 集合讲的数据,流讲的是对数据的计算
  • 注意:
  • 1.Stream自己不会创建元素
  • 2.Stream不会改变原对象|数据源,会返回一个持有结果的新的stream
  • 3.惰性加载: stream操作是延迟执行的,会等到需要结果的时候才会执行
  • 4.流是一次性的流,如果已经使用过流后,这个流就已经被消费了,所有不能一个流反复使用
  • 创建流
  • 中间操作
  • 终止操作
import java.util.*;
import java.util.stream.Stream;
public class StreamDemo01 {
	public static void main(String[] args) {
        // 1、可以通过Conllection系列集合提供的顺序流stream()
        List<String> list = new ArrayList<>();
        Stream<String> stream1 = list.stream();
        System.out.println(stream1);
        
        // 2、通过Arrays中的静态方法stream()获取数据流
        Integer ints[] = new Integer[10];
        Stream<Integer> stream2 = Arrays.stream(ints);
        stream2.forEach(System.out::println);
        

        // 3、通过Stream类中的静态方法of()
        Stream<String> stream3 = Stream.of("aa", "bb", "cc","123");
        stream3.forEach(System.out::println);

	}
}

Stream使用

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

import org.junit.jupiter.api.Test;

import com.shsxt.entity.Person;
import com.shsxt.entity.Status;

public class StreamDemo02 {
	List<Person> list = Arrays.asList(
		    new Person("张三", 18,Status.BUSY),
		    new Person("李四", 38,Status.FREE),
		    new Person("王五", 50,Status.BUSY),
		    new Person("赵六", 16,Status.FREE),
		    new Person("田七", 28,Status.BUSY),
		    new Person("田七", 28,Status.NORMAL)
		);
	
	@Test
	public void test3() {
		list.stream().map(Person::getName).forEach(System.out::println);
	}
	
	@Test
	public void test2() {
		list.stream().sorted().forEach(System.out::println);
	}
	
	@Test
	public void test() {
		Stream<Person> stream = list.stream();
		//中间操作
		stream = stream.filter((p)->{
			System.out.println("------正在执行中间操作-------过滤|筛选");
			return p.getAge()>18;
		})
		.distinct();
		//.limit(2);
		//终止操作
		stream.forEach(System.out::println);
	}
}


发布了26 篇原创文章 · 获赞 23 · 访问量 1581

猜你喜欢

转载自blog.csdn.net/GlobalZhang/article/details/105279069
今日推荐