重庆巴南区网站开发公司,市辖区郑州网站建设,众意网站建设zyecn,dw网页设计代码免费Java流Stream使用详解
体验Stream流的作用
需求#xff1a;按照下面的要求完成集合的创建和遍历创建一个集合#xff0c;存储多个字符串元素
ArrayListString list new ArrayList();
list.add(张无忌);
list.add(周芷若);
lis…Java流Stream使用详解
体验Stream流的作用
需求按照下面的要求完成集合的创建和遍历创建一个集合存储多个字符串元素
ArrayListString list new ArrayList();
list.add(张无忌);
list.add(周芷若);
list.add(赵敏);
list.add(张强);
list.add(张三丰);
完成如下要求
1.把所有以“张”开头的元素存储到新集合中
2.把“张”开头的长度为3的元素再存储到新集合中
3.遍历打印最终结果
实现代码参考
import java.util.ArrayList;public class StreamFirstTime {public static void main(String[] args) {ArrayListString list new ArrayList();list.add(张无忌);list.add(周芷若);list.add(赵敏);list.add(张强);list.add(张三丰);/*1.把所有以“张”开头的元素存储到新集合中2.把“张”开头的长度为3的元素再存储到新集合中3.遍历打印最终结果*//*ArrayListString newList new ArrayList();ArrayListString newList2 new ArrayList();for (String name : list) {if (name.startsWith(张)){newList.add(name);if (name.length() 3){newList2.add(name);}}}// 打印for (String name : newList) {System.out.println(name);}System.out.println();// 打印for (String name : newList2) {System.out.println(name);}*/// 使用流进行过滤和打印list.stream().filter(s-s.startsWith(张)).filter(s-s.length() 3).forEach(s - System.out.println(s));}
} 流Stream的思想及概念
Stream流相当于流水线可以进行流式操作。其在使用时一般结合Lambda表达式简化集合、数组的操作
Stream流的使用步骤
①先得到一条Stream流(流水线),并把数据放上去
②利用Stream流中的API进行各种操作 用途 方法流程名称 区别 过滤 转换 中间方法 方法调用完毕之后还可以调用其他方法 统计 打印 终结方法 最后一步调用完毕之后不能调用其他万法
获取一条流水线Stream并把数据放上去 获取方式 方法名 说明 单列集合 default StreamE stream() Collection中的默认方法 双列集合 无 无法直接使用stream流需要先使用keySet()、entrySet()转换成单列集合才可使用 数组 public static T StreamT stream(T[] array) Arrays工具类中的静态方法 一堆零散数据 public staticT StreamT of(T...values) Stream接口中的静态方法需要是同种数据类型
单列集合的流水线生成及使用方法
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.stream.Stream;public class StreamDemo2 {public static void main(String[] args) {// 1.单列集合// 获取流直接使用Collection中的默认方法stream()CollectionString collection new ArrayList();Collections.addAll(collection,aaa, bbb, ccc);// 默认方法stream()获取流StreamString stream collection.stream();// 使用终结方法打印一下流水线上的所有数据lambda实现stream.forEach(s - System.out.println(s));}
}
双列集合的流水线生成及使用方法
import java.util.HashMap;
import java.util.Map;public class StreamDemo3 {public static void main(String[] args) {// 2. 双列集合使用流// 创建双列集合MapString, Integer hm new HashMap();// 添加数据hm.put(一, 1);hm.put(二, 2);hm.put(三, 3);hm.put(四, 4);hm.put(五, 5);// 获取stream流// 双列集合无法直接创建stream流// 需要使用keySet或entrySet转换后才能使用// 打印所有keyhm.keySet().stream().forEach(s - System.out.println(s));// 打印所有valueshm.values().stream().forEach(i - System.out.println(i));// entrySet方法打印所有entryhm.entrySet().stream().forEach(entry - System.out.println(entry));}
}
数组的stream流用法Arrays.stream方法
import java.util.Arrays;public class StreamDemo4 {public static void main(String[] args) {// 3.数组的Stream使用方法// 创建数组int[] arr1 {1, 2, 3, 4, 5, 6};String[] arr2 {a, b, c, d, e};// 获取stream流使用Arrays的stream方法Arrays.stream(arr1).forEach(i - System.out.println(i));Arrays.stream(arr2).forEach(s - System.out.println(s));}
}
一堆零散的数据用Stream.of方法
import java.util.stream.Stream;public class StreamDemo5 {public static void main(String[] args) {// 一堆零散的数据// 这堆数据需要是同一种类型否则无法使用stream// 一堆数值Stream.of(1, 2, 3, 4, 5).forEach(i - System.out.println(i));// 一堆字符串Stream.of(a, b, c).forEach(s - System.out.println(s));}
}
Stream.of方法的坑
Stream接口中静态方法of的坑方法的形参是一个可变参数可以传递一堆零散的数据也可以传递数组但是数组必须是引用数据类型的如果传递基本数据类型是会把整个数组当做一个元素放到Stream当中。如下代码
import java.util.stream.Stream;public class StreamDemo6 {public static void main(String[] args) {String[] arr1 {一, 二, 三};int[] arr2 {1, 2, 3};// 这个打印元素内容Stream.of(arr1).forEach(s - System.out.println(s));// 这个打印的是地址因为arr2装的是基本数据类型。可能不是你想要的效果Stream.of(arr2).forEach(s - System.out.println(s));/* 本程序输出* 一* 二* 三* [I682a0b20*/}
}