代码如下:
package StreamTest;import java.lang.reflect.Array;
import java.util.ArrayList;public class StreamDemo {public static void main(String[] args){ArrayList<String> list = new ArrayList<String>();list.add("Tom");list.add("jack");list.add("张敏");list.add("张无忌");list.add("刘洋");list.add("Bom");list.add("张曼玉");ArrayList<String> zhangList = new ArrayList<String>();for (String s:list){if (s.startsWith("张"))zhangList.add(s);}System.out.println(zhangList);ArrayList<String> threeList = new ArrayList<String>();for(String s:zhangList){if (s.length()==3){threeList.add(s);}}System.out.println(threeList);}
}
测试结果:
我们可以看到,按照需求实现以后,仅仅只是两个简单的过滤操作,我们就写了那么长的代码,那我们有没有办法有更好的方式实现这样的需求呢?
sure,用Stream流
代码如下:
package StreamTest;import java.lang.reflect.Array;
import java.util.ArrayList;public class StreamDemo {public static void main(String[] args){ArrayList<String> list = new ArrayList<String>();list.add("Tom");list.add("jack");list.add("张敏");list.add("张无忌");list.add("刘洋");list.add("Bom");list.add("张曼玉");//Stream流来改进
// list.stream().filter(s->s.startsWith("张")).filter(s->s.length()==3).forEach(s -> System.out.println(s));list.stream().filter(s->s.startsWith("张")).filter(s->s.length()==3).forEach(System.out::println);}
}
测试结果: