JDK8特性之流计算
1.什么是jdk?
jdk就是我们的开发工具包,里面有封装好的很多类,今天讲的Stream就是其中一个工具类
流非常重要,对于我们看懂别人的代码阿,简化计算阿,计算速度提升都有很大帮助
2.普通的数据结构集合怎么转换成流
Stream<Integer> stream=Stream.of(1,2,3);
ArrayList<String> list=new ArrayList<>();
list.add("你好")
Stream<Integer> stream=Stream.of(list); //集合转换为流
//set和map也是一样,map要先转换成Collection对象
//经常用的转换方式
list.stream();
int[] arr={1,2,3};
arr.stream();
第二种比较方便,直接简单
3.流的API
3.1 终结方法
一旦用了下面两个方法,那么链式编程就不能再点下去了,会出异常,因为流关闭了
list.stream().foreach(name->system.out.println(name))//遍历输出名字
list.stream().count();//计数
3.2 链式方法
list.stram().skip(2);//跳过前面2个
list.stram().skip(2).limit(1);//跳过前面2个后取新的最前面的第一个
list.stream().map((name)-> new Person(name))//转换成一个person对象,map方法就是转换类型的
list.stream().filter((name)-> name.length()==2)//过滤器,过滤出自己想要的结果
以上是列举最重要的出来
3.3 完整实例
要求输出person对象前两个人
import java.util.ArrayList;
class Person{
String name;
Person(){
this.name=null;
}
Person(String name){
this.name=name;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
'}';
}
}
public class Stream {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<>();
list.add("李白");
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
// list.stream().forEach((name)-> System.out.println(name));
// list.stream().filter((String name)->{return name.startsWith("李");});
list.stream().filter((name)-> name.length()==2).map((name)-> new Person(name)).limit(2).forEach(name-> System.out.println(name));
}
}
多练一练,花个半小时就学会了