Java之Stream数据流接口


简介:

从JDK1.8大数据时代开始,类集中也有支持数据流式分析处理操作,有一个专门的Stream接口,同时在Collection接口中提供有实例化Stream接口的方法:

public default Stream stream() {
        return StreamSupport.stream(spliterator(), false);
    }

Stream主要功能是进行数据的分析操作,同时也是针对于集合的数据分析操作:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.stream.Stream;

public class MAIN {
    public static void main(String[] args) {
        List list = new ArrayList();
        Collections.addAll(list, "java","javaScript","Html","Python","C++");    // 添加元素
        Stream stream = list.stream();    // 获得Stream的接口对象
//        System.out.println(stream.count());    // 输出元素的个数
        // 要求将每一个元素的字母变为小写字母,然后判断包含字母j的元素有几个
        System.out.println(stream.filter((ele)-> ele.toLowerCase().contains("j")).count());
    }
}

输出结果:


数据采集:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class MAIN {
    public static void main(String[] args) {
        List list = new ArrayList();
        Collections.addAll(list, "java","javaScript","Html","Python","C++");    // 添加元素
        // 将满足条件的元素汇集转为List集合
        List cll = stream.filter((ele)-> ele.toLowerCase().contains("j")).collect(Collectors.toList());
        System.out.println(cll);
        
    }
}

输出结果:

在Stream数据流进行数据的处理过程中还允许分页处理:

- 设置取出的最大的数据量:public Stream limit(long maxSize);
- 跳过指定数据量:public Stream skip(long n);

代码实现:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class MAIN {
    public static void main(String[] args) {
        List list = new ArrayList();
        Collections.addAll(list, "java","javaScript","Js","Jsp","JJ","Html","Python","C++","R","GO","PHP","Css","C","C#","SQL","MySQL","Orecle");    // 添加元素
        List collect = stream.filter((ele)-> ele.toLowerCase().contains("j")).skip(2).limit(3).collect(Collectors.toList());
        System.out.println(collect);
        
    }
}

输出结果: