上次老师跟大家分享了cookie,会话和令牌,今天给大家分享一下Java 8中的流API。
1, Java 8引入了全新API的流。这里的流和I/O流不同,它更像具有Iterable的集合类,但行为和集合类又有所不同。
2、流是对集合对象功能的增强,它专注于对集合对象进行各种非常便利,高效的聚合操作,或者大批量数据操作。
3,只要给出需要对其包含的元素执行什么操作,比如“过滤掉长度大于10的字符串”,“获取每个字符串的首字母”等,小溪会隐式地在内部进行遍历,做出相应的数据转换。
1,函数式编程带来的好处尤为明显。这种代码更多地表达了业务逻辑的意图,而不是它的实现机制。易读的代码也易于维护,更可靠,更不容易出错。
2,高端
公共类数据{
私有静态List列表=零;
静态{
吴PersonModel=new PersonModel(“吴七”,18岁,“男”);
PersonModel张=new PersonModel(“张三”,19日,“男”);
王PersonModel=new PersonModel(20岁的“王si”“女”);
PersonModel赵=new PersonModel(20岁的“赵吴”“男”);
陈PersonModel=new PersonModel(“陈刘”,21岁的“男”);=数组列表。asList(吴、张、王、赵、陈);
}
公共静态ListgetData () {
返回列表;
}
}
<李>遍历数据并检查其中的元素时使用。李>
<李>过滤器接受一个函数作为参数,该函数用λ表达式表示。李>
/* *
*过滤所有的男性
*/公共静态孔隙fiterSex () {
Listdata=https://www.yisu.com/zixun/Data.getData ();//老
List ();
(PersonModel人:数据){
如果(“男”.equals (person.getSex ())) {
temp.add(人);
}
}
System.out.println(临时);//新
List收集=数据
.stream ()
.filter(人→“男”.equals (person.getSex ()))
.collect (toList ());
System.out.println(收集);
}/* *
*过滤所有的男性并且小于20岁
*/公共静态孔隙fiterSexAndAge () {
Listdata=https://www.yisu.com/zixun/Data.getData ();//老
List ();
(PersonModel人:数据){
如果(“男”.equals (person.getSex()),和person.getAge () & lt; 20) {
temp.add(人);
}
}//新1
List收集=数据
.stream ()
.filter(人→{
如果(“男”.equals (person.getSex()),和person.getAge () & lt; 20) {
返回true;
}
返回错误;
})
.collect (toList ());//新2
Listcollect1=数据
.stream ()
.filter(人→(“男”.equals (person.getSex()),和person.getAge () & lt; 20))
.collect (toList ());
}
<李>地图生成的是个一对一映射,为的作用李>
<李>比较常用李>
<李>而且很简单李>
/* *
*取出所有的用户名字
*/公共静态孔隙getUserNameList () {
Listdata=https://www.yisu.com/zixun/Data.getData ();//老
新ArrayList列表<字符串>=<> ();
(PersonModel波斯:数据){
list.add (persion.getName ());
}
System.out.println(列表);//新1
列表<字符串>收集=data.stream ()。地图(人-> person.getName ()) .collect (toList ());
System.out.println(收集);//新2
列表<字符串> collect1=data.stream () . map (PersonModel:: getName) .collect (toList ());
System.out.println (collect1);//新的3
列表<字符串> collect2=data.stream ()。地图(人-> {
System.out.println (person.getName ());
返回person.getName ();
}).collect (toList ());
}
<李>顾名思义,跟地图差不多,更深层次的操作李>
<李>但还是有区别的李>
<李>地图和平坦返回值不同李>
<李>地图每个输入元素,都按照规则转换成为另外一个元素。李>
<李>还有一些场景,是一对多映射关系的,这时需要flatMap。李>
<李>地图一对一李