简介:
从JDK1.8大数据时代开始,类集中也有支持数据流式分析处理操作,有一个专门的Stream接口,同时在Collection接口中提供有实例化Stream接口的方法:
public default Stream<E> 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<String> list = new ArrayList<String>();
Collections.addAll(list, "java","javaScript","Html","Python","C++"); // 添加元素
Stream<String> 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<String> list = new ArrayList<String>();
Collections.addAll(list, "java","javaScript","Html","Python","C++"); // 添加元素
// 将满足条件的元素汇集转为List集合
List<String> cll = stream.filter((ele)-> ele.toLowerCase().contains("j")).collect(Collectors.toList());
System.out.println(cll);
}
}
输出结果:
在Stream数据流进行数据的处理过程中还允许分页处理:
- 设置取出的最大的数据量:public Stream<T> limit(long maxSize);
- 跳过指定数据量:public Stream<T> 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<String> list = new ArrayList<String>();
Collections.addAll(list, "java","javaScript","Js","Jsp","JJ","Html","Python","C++","R","GO","PHP","Css","C","C#","SQL","MySQL","Orecle"); // 添加元素
List<String> collect = stream.filter((ele)-> ele.toLowerCase().contains("j")).skip(2).limit(3).collect(Collectors.toList());
System.out.println(collect);
}
}
输出结果: