获取流对象

获取单列集合,双列集合,数组的流对象

单列集合获取流对象:

1、java.util.Collection接口中加入了default方法stream()获取流对象,因此其所有实现类均可通过此方式获取流。

public class StreamTest01 {
List<String> list = new ArrayList<>();
Stream<String> stream1 = list.stream();
Set<String> set = new HashSet<>();
Stream<String> stream2 = set.stream();
}

双列集合获取流对象

2、java.util.Map接口想要获取流,先通过keySet()、values()或entrySet()方法获取键、值或键值对的单列集合,再通过stream()获取流对象。

public class StreamTest01 {
Map<String, String> map = new HashMap<>();
Stream<String> keyStream = map.keySet().stream();
Stream<String> valueStream = map.values().stream();
Stream<Map.Entry<String,String>>entryStream = map.entrySet().stream();
}

数组获取流对象

数组获取流,使用Stream接口中的的静态方法of(T...values)获取流

public class StreamTest01 {
String[] array = {"东邪", "西毒", "南帝", "北丐", "中神通"};
Stream<String> stream = Stream.of(array);
}

filter过滤,结果收集(数组)

/**
* 需求
* 过滤:filter、结果收集(数组)
* 问题:
* 有如下7个元素黄药师,冯蘅,郭靖,黄蓉,郭芙,郭襄,郭破虏,使用Stream将以郭字开头的元素存入新数组
*/
public class StremFilterTest_Array {
public static void main(String[] args) {
Stream<String> stream = Stream.of("黄药师", "冯蘅", "郭靖", "黄蓉", "郭芙", "郭襄", "郭破虏");
//使用Stream将以郭字开头的元素存入新数组
String[] gous = stream.filter(t -> t.startsWith("郭")).toArray(String[]::new);
System.out.println(gous[0]);
}
}

取用前几个:limit、跳过前几个:skip、 forEach: 循环消费

/**
* 需求:
* 已知ArrayList集合中有如下元素{陈玄风、梅超风、陆乘风、曲灵风、武眠风、冯默风、罗玉风},使用Stream
* 1、取出前2个元素并在控制台打印输出。
* 2、取出后2个元素并在控制台打印输出
*/
public class Limit_Skip {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("陈玄风");
list.add("梅超风");
list.add("陆乘风");
list.add("曲灵风");
list.add("武眠风");
list.add("冯默风");
list.add("罗玉风");
list.stream().limit(2).forEach(System.out::println);
list.stream().skip(list.size() - 2).forEach(System.out::println);
}
}

映射:map、 逐一消费:forEach

/**
* 需求:
* 有如下整数1,-2,-3,4,-5
* 使用Stream取元素绝对值并打印
*/
public class Map_ForEach {
public static void main(String[] args) {
Stream<Integer> stream = Stream.of(1, -2, -3, 4,-5);
stream.map(Math::abs).forEach(System.out::println);
}
}

组合:concat、 结果收集(list)

/**
* 需求:
* 已知数组arr1中有如下元素{郭靖,杨康},arr2中有如下元素{黄蓉,穆念慈},使用Stream将二者合并到List集合
*/
public class Concat_List {
public static void main(String[] args) {
Stream<String> streamA = Stream.of("郭靖", "杨康");
Stream<String> streamB = Stream.of("黄蓉", "穆念慈");
List<String> strList = Stream.concat(streamA, streamB).collect(Collectors.toList());
}
}

获取并发流

parallelSteam: 是一个并行流,多管道流

Stram:是一个单管道的流

二者区别:parallelSteam的处理效率比Stram的高

public class ParallelStream {
public static void main(String[] args) {
Collection<String> coll = new ArrayList<>();
Stream<String> parallelStream1 = coll.parallelStream();
Stream<Integer> parallelStream2 = Stream.of(100, 200, 300, 400).parallel();
}
}

最新文章

  1. 身份证校验,前台js校验,后台java校验
  2. Edge Linking
  3. (copy) DBAN vs nwipe
  4. A Complete Guide to the &lt;Picture&gt; Element
  5. opsview
  6. invoking gdb
  7. Java JPushV3服务端
  8. java 异常架构图
  9. TCPIP通信
  10. CSS设置input placeholder文本的样式
  11. java调用控制台命令
  12. 利用NSURLSession下载视频,图片,能实现断点续传
  13. scala学习笔记5 (隐式转化/参数/类)
  14. 详解Lambda
  15. css 制作导航条布局
  16. linux 空间释放,mysql数据库空间释放
  17. Linux开源监控平台 -- Zabbix 小白安装以及使用
  18. SNF快速开发平台3.0之BS页面展示和九大优点-部分页面显示效果-Asp.net+MVC4.0+WebAPI+EasyUI+Knockout
  19. 使用JavaScript完成文字向上间歇滚动
  20. JS--我发现,原来你是这样的JS(一)(初识,历史)

热门文章

  1. Spring 框架基础(04):AOP切面编程概念,几种实现方式演示
  2. django-表单之获取表单信息(二)
  3. 代码作家Alpha冲刺阶段博客目录
  4. shell 脚本中的注释详解
  5. python:将网页图片保存到本地
  6. 《JavaScript设计模式与开发实践》-- 迭代器模式
  7. 优化 Git Commit Message
  8. PHP获取当前时间
  9. crontab中部署Python脚本注意事项
  10. 【java基础】为什么重写toString()方法?