1.Stream流介绍
在 Java 中,Stream 流是一种处理集合数据的高级方式,可以方便地对集合进行各种操作,如过滤、映射、排序、聚合等。
Stream流的使用步骤:
- 先得到一条Stream流,并把数据放上去
- 利用Stream流中的API进行各种操作
- 中间方法:方法调用完毕之后,还可以调用其他方法
- 终结方法:最后一步,调用完毕之后,不能调用其他方法
2.获取Stream流
各个数据类型获取Stream流的方法如下:
2.1单列集合
首先是单列集合获取Stream流:
示例:
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList<>();
Collections.addAll(arrayList, "a", "b", "c", "d", "e", "f");
// 获取Stream流
Stream<String> stream = arrayList.stream();
stream.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
});
}
可以使用链式调用进行简化:
public static void main(String[] args) {
ArrayList<String> arrayList = new ArrayList<>();
Collections.addAll(arrayList, "a", "b", "c", "d", "e", "f");
arrayList.stream().forEach(s -> System.out.println(s));
}
2.2双列集合
示例:
public static void main(String[] args) {
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("k1", "v1");
hashMap.put("k2", "v2");
hashMap.put("k3", "v3");
hashMap.put("k4", "v4");
// 获取Stream流
// 方法1
hashMap.keySet().stream().forEach(e -> System.out.println(e));
// 方法2
hashMap.entrySet().stream().forEach(e -> System.out.println(e));
}
运行结果:
2.3数组
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
// 获取Stream流
Arrays.stream(arr).forEach(e -> System.out.println(e));
}
运行结果:
除了基本数据类型,引用数据类型也是可以的
2.4零散的数据
public static void main(String[] args) {
Stream.of(1, 2, 3, 4, 5).forEach(e -> System.out.print(e + " "));
System.out.println();
Stream.of("a", "b", "c", "d").forEach(e -> System.out.print(e + " "));
}
注意:这种方式必须要保证数据的类型是一致的
3.Stream.of()方法的注意事项
查看Stream.of()方法的参数可以看到,方法的参数是一个可变参数
可变参数的底层其实就是一个数组
能看到数据打印出来了,但是数组的类型不止是引用数据类型,还有基本数据类型
因此Stream.of()方法的形参可以是一堆零散的数据,也可以是数组,但必须要是引用类型的数组. 如果传递的是基本数据类型的数组,会把整个数组当成一个元素放到Stream流当中