课程名称:一课掌握Lambda表达式语法及应用
课程章节:第四章第四节
主讲老师:大牧莫邪
课程内容:
8:Stream操作集合中数据
public class test4 {
public static void main(String[] args) {
// 1:批量数据
// 多个数据
Stream stream = Stream.of("admin","hh","oh");
// 数组
String[] arr = {"arr","hh","tom"};
Stream stream1 = Arrays.stream(arr);
// 列表
List<String> list = new ArrayList<>();
list.add("admin");
list.add("hh");
Stream stream2 = list.stream();
// 集合
Set<String> set = new HashSet<>();
set.add("admin");
set.add("hh");
Stream stream3 = set.stream();
// Map
Map<Object, Object> map = new HashMap<>();
map.put("admin", "admin");
map.put("hh", "hh");
Stream stream4 = map.entrySet().stream();
// 2:Stream对于基本数据类型的功能封装
// IntStream.of(new int[] {10, 20, 30}).forEach(System.out::println);
// IntStream.range(1, 5).forEach(System.out::println); //不包含最后一个元素
// IntStream.rangeClosed(1, 5).forEach(System.out::println); //包含最后一个元素
// 3:Stream对象 -> 转换得到指定类型
// 数组
// Object[] objx = stream.toArray(String[]::new); //stream一旦被使用,就会闭合,没有数据了,所以需要注释
// 字符串
// String str = stream.collect(Collectors.joining()).toString();
// System.out.println(str);
//列表
// List<String> streamList = (List<String>) stream.collect(Collectors.toList());
// System.out.println(streamList);
//集合
// Set<String> streamSet = (Set<String>) stream.collect(Collectors.toSet());
// System.out.println(streamSet);
//map
Map<String,String> streamMap = (Map<String, String>) stream.collect(Collectors.toMap(x->x, y->"value:"+y));
// System.out.println(streamMap);
// Stream中常见的API操作
List<String> accountList = new ArrayList<>();
accountList.add("admin");
accountList.add("hh");
accountList.add("bb");
//map() 中间操作,map()方法接收一个Functional接口
// accountList = accountList.stream().map(x->"hero:" + x).collect(Collectors.toList()); //list转为Map,再转为list
//filter() 添加过滤条件,过滤符合条件的用户
// accountList = accountList.stream().filter(x-> x.length() >=5).collect(Collectors.toList());
//ForEach 增强型循环
// accountList.forEach(x-> System.out.println("forEach->" + x));
//peek() 中间操作:迭代数据完成数据的依次处理
/*accountList.stream()
.peek(x-> System.out.println("peek 1:" + x))
.peek(x-> System.out.println("peek 2:" + x))
.forEach(System.out::println);*/
// accountList.forEach(System.out::println);
// Stream中对于数字运算的支持
List<Integer> intList = new ArrayList<>();
intList.add(10);
intList.add(20);
intList.add(30);
intList.add(40);
intList.add(50);
intList.add(50);
intList.add(50);
//skip() 中间操作,有状态(对后续的数据是有影响的),跳过部分数据
// intList.stream().skip(3).forEach(System.out::println); //前三个数据被忽略,后续数据会被提取
// limit() 中间操作,有状态,限制输出数据量
// intList.stream().skip(3).limit(1).forEach(System.out::println);
// distinct 中间操作,有状态,剔除重复数据
// intList.stream().distinct().forEach(System.out::println);
// sorted() 中间操作,有状态,排序
// max() 获取最大值
Optional optional = intList.stream().max((x, y)-> x-y);
// System.out.println(optional.get());
// min() 获取最小值
Optional optional2 = intList.stream().min((x,y)-> x-y);
System.out.println(optional2.get());
// reduce() 合并处理数据
Optional optional1 = intList.stream().reduce((sum, x)-> sum + x);
// System.out.println(optional1.get());
}
}
课程收获:
这节课主要学习了Lambda中的集合及其用法,只能说,方便,是真的方便,之前从来没有发现这个优势,之前只是感觉Lambda的方式很标新立异,学到这里感觉这东西很牛!需要好好复习!
加油了,同志们
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦