java8 集合流_java8之新特性--集合流式操作

本文介绍了Java集合流式操作的概念,它不存储数据,更像是一个迭代器,用于有序地处理数据源中的元素并进行各种操作。文章通过三个步骤展示了流式操作的使用:1.获取数据源,如集合或数组;2.执行中间操作,如过滤、排序和映射;3.进行最终操作,如转换为集合或计算总数。示例代码展示了如何从ArrayList创建流,并使用Stream API的不同方法来获取和操作数据。
摘要由CSDN通过智能技术生成

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

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

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

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对象数组的类:

package com.test.cgb;

import java.util.ArrayList;

import java.util.List;

public class StreamingData {

@SuppressWarnings("rawtypes")

public static ArrayList getData() {

ArrayList 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 extends Iterable {

default Stream stream() {

return StreamSupport.stream(spliterator(), false);

}

}

*/

@SuppressWarnings("rawtypes")

Stream se = StreamingData.getData().stream();

System.out.println(se.toString());

/*

* 第二种写法

* public interface Stream extends BaseStream> {

public static Stream of(T t) {

return StreamSupport.stream(new Streams.StreamBuilderImpl<>(t), false);

}

}

*/

Stream.of(StreamingData.getData());

/**

* 第三种写法,可扩展参数

* public interface Stream extends BaseStream> {

@SafeVarargs

@SuppressWarnings("varargs") // Creating a stream from an array is safe

public static Stream 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)

);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值