Stream流
Stream流思想
1.获取流对象
2.中间方法
3.终结方法
1.获取Stream流对象
集合:使用Collection接口中的默认方法
default Stream<E> stream()
数组:使用Arrays数组工具类中的静态方法
static<T>Stream<T>stream(T[] array)
零散数据:使用Stream类中的静态方法
static<T>Stream<T> of(T... values)
public class StreamDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
Collections.addAll(list,"张无忌","张良","王二麻子","谢广坤",
"张三丰","张翠山");
//过滤到新的集合
list.stream().filter(s->s.startsWith("张")).filter(s->s.length()==3).forEach(s-> System.out.println(s));
System.out.println("-------------");
/*
Stream流思想
1.获取流对象
2.中间方法
3.终结方法
*/
/*
1.获取Stream流对象
集合:使用Collection接口中的默认方法
default Stream<E> stream()
数组:使用Arrays数组工具类中的静态方法
static<T>Stream<T>stream(T[] array)
零散数据:使用Stream类中的静态方法
static<T>Stream<T> of(T... values)
*/
Set<String> set = new HashSet<>();
Collections.addAll(set,"张无忌","张良","王二麻子","谢广坤",
"张三丰","张翠山");
set.stream().forEach(s -> System.out.println(s));
System.out.println("-------------");
//双列集合 间接获取流 用entrySet拿到所有的键值对对象
Map<String,Integer> map = new HashMap();
map.put("张无忌",11);
map.put("张良",22);
map.put("王二麻子",33);
map.put("谢广坤",44);
map.put("张三丰",55);
map.put("张翠山",66);
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
entrySet.stream().forEach(s-> System.out.println(s));
System.out.println("-------------");
//数组
int[] arr1 = {11,22,33,44,55};
double[] arr2 = {11.1,22.2,33.3,44,55};
Arrays.stream(arr1).forEach(s-> System.out.println(s));
Arrays.stream(arr2).forEach(s-> System.out.println(s));
System.out.println("-------------");
//零散数据
Stream.of(1,2,3,4,5,6).forEach(s-> System.out.println(s));
下面展示一些 输出结果
。
张无忌
张三丰
张翠山
张良=22
张翠山=66
王二麻子=33
张三丰=55
张无忌=11
谢广坤=44
//2.中间方法
//filter 对流中的数据进行过滤,上面演示过了
//limit 获取前几个对象
System.out.println("-------------");
list.stream().limit(3).forEach(s-> System.out.println(s));
//skip 跳过前几个对象
System.out.println("-------------");
list.stream().skip(3).forEach(s-> System.out.println(s));
//concat 合并两个流为一个流
System.out.println("-------------");
Stream<String> stream1 = list.stream().skip(3);
Stream<String> stream2 = list.stream().limit(3);
Stream.concat(stream1,stream2).forEach(s-> System.out.println(s));
//distinct 去除流中重复的元素依赖
System.out.println("-------------");
list.stream().distinct().forEach(s-> System.out.println(s));
下面展示一些 输出结果
。
谢广坤
张三丰
张翠山
张无忌
张良
王二麻子
-------------
张无忌
张良
王二麻子
谢广坤
张三丰
张翠山
//流终结操作方法
//count 返回流中的元素数
System.out.println("-------------");
long count = list.stream().count();
System.out.println(count);
下面展示 输出结果
。
6
Stream收集操作
把Stream流操作后的结果数据转回到集合
下面展示一些 代码片
。
//Stream收集操作 把Stream流操作后的结果数据转回到集合
System.out.println("-------------");
List<Integer> collect = Stream.of(1, 2, 3, 4, 5, 6).filter(s -> s % 2 == 0).collect(Collectors.toList());
System.out.println(collect);
输出结果:
[2, 4, 6]