蔡香满屋
站在牛顿头上吃苹果

集合流式操作概念:不是一个数据结构,它并不负责任何的数据存储。非常像是一个迭代器。可以有序的获取到数据源中的每一个数据,并且可以对这些数据进行一些操作。

流式操作的每一个方法,返回值都是返回流本身

集合流式操作由三个步骤组成:

1.获取数据源:集合,数组

2.对数据进行处理的过程:过滤,排序,映射---------------------(中间操作)

3.对流中书的整合:转成集合,数量--------------------(最终操作)

接下来进行详细了解下:

第一步骤:准备数据源:

定义一个StreamingPerson对象代码如:

package com.test.cgb;

public class StreamingPerson {
	
	private String name;
	
	private int age;
	
	private int score;

	public String getName() {
		return name;
	}

	public StreamingPerson setName(String name) {
		this.name = name;
		return this;
	}

	public int getAge() {
		return age;
	}

	public StreamingPerson setAge(int age) {
		this.age = age;
		return this;
	}

	public int getScore() {
		return score;
	}

	public StreamingPerson setScore(int score) {
		this.score = score;
		return this;
	}
	
	public StreamingPerson(String name, int age, int score) {
		this.name = name;
		this.age = age;
		this.score = score;
	}
	
	@Override
	public String toString() {
		return "StreamingPerson {" +
				"name=" + name + '\'' +
				",age=" + age +
				", score=" + score +
				'}';
	}
}

  还有一个创建ArrayList<StreamingPerson>对象数组的类:

package com.test.cgb;

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

public class StreamingData {

	@SuppressWarnings("rawtypes")
	public static ArrayList getData() {
		ArrayList<StreamingPerson> list = new ArrayList<>();
		list.add(new StreamingPerson("流1", 10, 70));
		list.add(new StreamingPerson("流2", 20, 80));
		list.add(new StreamingPerson("流3", 30, 90));
		list.add(new StreamingPerson("流4", 40, 60));
		list.add(new StreamingPerson("流5", 50, 40));
		return list;
	}

}

  获取数据源:

package com.test.cgb;

import java.util.stream.Stream;

public class StreamingTest {

	public static void main(String[] args) {
		// 第一种写法用得比较多
		/**
		 * 
		 * public interface Collection<E> extends Iterable<E> {
			  default Stream<E> stream() {
	        		return StreamSupport.stream(spliterator(), false);
	    		}
    		}
		 */
		@SuppressWarnings("rawtypes")
		Stream se = StreamingData.getData().stream();
		System.out.println(se.toString());
		
		/*
		 * 第二种写法
		 * public interface Stream<T> extends BaseStream<T, Stream<T>> {
			  public static<T> Stream<T> of(T t) {
	        		return StreamSupport.stream(new Streams.StreamBuilderImpl<>(t), false);
	    	   }
    	   }
		 */ 
		Stream.of(StreamingData.getData());
		
		/**
		 * 第三种写法,可扩展参数
		 * public interface Stream<T> extends BaseStream<T, Stream<T>> {
			    @SafeVarargs
			    @SuppressWarnings("varargs") // Creating a stream from an array is safe
			    public static<T> Stream<T> of(T... values) {
			        return Arrays.stream(values);
			    }
		    }
		 */
		Stream.of(
				new StreamingPerson("流1", 10, 70), 
				new StreamingPerson("流2", 20, 80), 
				new StreamingPerson("流3", 30, 90),
				new StreamingPerson("流4", 40, 60)
                ); } }

  

posted on 2020-03-05 14:56  蔡香满屋  阅读(467)  评论(0)    收藏  举报