文章公众号连接:https://mp.weixin.qq.com/s/m5Knf35LFH5DZEiqUsUMqw
简介
jdk1.8新增了一个接口类stream,和我们之前接触的字节流概念不一样,stream相当于高级版的Iterator,可以通过lambada表达式对集合就行各种遍历高效的聚合操作,或者大批量的数据操作。
stream:数据串行操作
parallelStream:并行操作,在多核cpu下优势明显
使用
forEach循环数据
示例地址
示例说明
循环输出list对象里面的每一个属性
示例代码
public static void main(String[] args) {
List<Test> list = init();
list.stream().forEach(test->{
System.out.println(test.getAge());
System.out.println(test.getName());
});
}
sorted排序
示例地址
示例说明
根据年龄排序
示例代码
:: 意思是映射Test类下的getAge方法
public static void main(String[] args) {
List<Test> list = init();
list.stream().sorted(Comparator.comparing(Test :: getAge)).forEach(test->{
System.out.println(test.getAge());
System.out.println(test.getName());
});
}
filter过滤
示例地址
示例说明
条件过滤,输出年龄大于5的数据
示例代码
public static void main(String[] args) {
List<Test> list = init();
list.stream().filter((Test test)->test.getAge()>5).forEach(test->{
System.out.println(test.getAge());
System.out.println(test.getName());
});
}
limit截断
示例地址
示例说明
输出前5条数据
扫描二维码关注公众号,回复:
8679524 查看本文章
示例代码
public static void main(String[] args) {
List<Test> list = init();
list.stream().limit(5).forEach(test->{
System.out.println(test.getAge());
System.out.println(test.getName());
});
}
skip跳过
示例地址
示例说明
跳过前五条数据
示例代码
public static void main(String[] args) {
List<Test> list = init();
list.stream().skip(5).forEach(test->{
System.out.println(test.getAge());
System.out.println(test.getName());
});
}
distinct 去重
示例地址
示例说明
去除重复的数据
示例代码
public static void main(String[] args) {
List<Test> list = init();
list.stream().distinct().forEach(test->{
System.out.println(test.getAge());
System.out.println(test.getName());
});
}
基础数据统计
示例地址
示例说明
获取总共人数、平均年龄、最大年龄、最小年龄、年龄之和
示例代码
public static void main(String[] args) {
List<Test> list = init();
IntSummaryStatistics statics = list.stream().mapToInt(test->test.getAge()).summaryStatistics();
System.out.println("总共人数:" + statics.getCount());
System.out.println("平均年龄:" + statics.getAverage());
System.out.println("最大年龄:" + statics.getMax());
System.out.println("最小年龄:" + statics.getMin());
System.out.println("年龄之和:" + statics.getSum());
}