Java------Stream流式编程入门(一)
Java------Stream流式编程入门(一)
Jdk8提供Stream流类库,实现对集合中的数据进行流水线式的处理,应用Stream流类库完成数据处理,进行编程,称为Stream流式编程。 目的:对集合中的数据进行多次连续的处理。
需求:在数组中有一堆字符串,找出长度大于4的字符串,将长度大于4的字符串转成大写字母,遍历输出。 基础写法:
@Test public void test1(){ String[] strs = new String[]{ "hello","world","hi","com","student"}; List<String> lits_filter = new ArrayList<>(); for (int i = 0; i < strs.length; i++) { String str = strs[i]; if (str.length()>4){ lits_filter.add(str); } } List<String> lits_upperCase = new ArrayList<>(); lits_filter.forEach(x->{ String upperCase = x.toUpperCase(); lits_upperCase.add(upperCase); }); for (String s : lits_upperCase) { System.out.println(s); } }
此方式需要对数据进行多次遍历。【性能低下】 也可以一次遍历。【多个操作在一个for循环中,代码耦合高,不方便维护】
String[] strs = new String[]{ "hello","world","hi","com","student"}; List<String> lits_filter = new ArrayList<>(); for (int i = 0; i < strs.length; i++) { if (strs[i].length()>4){ System.out.println(strs[i].toUpperCase()); } }
Stream流实现
@Test public void test1(){ String[] strs = new String[]{ "hello","world","hi","com","student"}; //使用Stream流完成上边对字符串的处理需求 Stream.of(strs).filter(x->x.length()>4).map(x->x.toUpperCase()).forEach(System.out::println); }
拆开:
//使用Stream流完成上边对字符串的处理需求 Stream.of(strs)//创建一个Stream流对象 .filter(x->x.length()>4)//过滤字符串,找到长度大于4的字符串 .map(x->x.toUpperCase())//转换大写 .forEach(System.out::println);//遍历输出
链式编程,每次返回的都是Stream流对象,反复调用。
for循环和Stream流对比
1.for循环是一种外部迭代方式,Stream是在内部迭代不需要程序员干涉。 2.for循环实现了“怎么做”,Stream实现“做什么”,实现了将具体的业务代码和内部遍历的代码完全分离。
下一篇:
Java 动态sql一条语句实现批量修改