JAVA8新特性(四)——Stream API
来源:互联网 发布:华为交换机端口模式 编辑:程序博客网 时间:2024/05/09 16:49
Stream使用来处理list、array这些集合的新API。链式编程,使用Stream处理代码更简洁。
创建流
steam() : 创建普通流。
parallelStream: 创建并行流。并行流是对流的处理是并行的,不是顺序的。
public List<String> codelist = Arrays.asList("1", "2", "3", "4", "", "5", "6");public Stream<String> getStream() { return codelist.stream();}@Testpublic void paralletTest() { codelist.parallelStream().forEach(System.out::println);}
forEach
strean对象的forEach方法,用于遍历。参数是Consumer接口
void forEach(Consumer<? super T> action);
用法
codelist.parallelStream().forEach(System.out::println);
打印
map
map返回一个新的stream,对每个源元素进行操作处理。参数是function
<R> Stream<R> map(Function<? super T, ? extends R> mapper);
用法
@Testpublic void mapTest() { getStream().filter((s) -> { return s != null && !"".equals(s); }).map((a) -> { return String.valueOf(Integer.valueOf(a) * 2); }).forEach(System.out::println);}
结果
filter
filter是过滤器,下面是过滤list中的空string的例子。
return stream.filter((s) -> { return s != null && !"".equals(s);}).collect(Collectors.toList());
limit
limit用于获得指定数量的流,参数是long
Stream<T> limit(long maxSize);
下面是获得5位流
getStream().filter((s) -> { return s != null && !"".equals(s);}).limit(5).forEach(System.out::println);
sorted
sorted用于排序,参数Comparator
Stream<T> sorted(Comparator<? super T> comparator);
下面是按值排序的
@Testpublic void sortTest() { getStream().filter((s) -> { return s != null && !"".equals(s); }).sorted((a, b) -> { return Integer.valueOf(b) - Integer.valueOf(a); }).forEach(System.out::println);}
Collectors
Collecors有许多规约操作,如将流转成list或其他。这里是返回list和字符串。
@Testpublic void collectTest() { List<String> filterList = getStream().filter((s) -> { return s != null && !"".equals(s); }).collect(Collectors.toList()); System.out.println("filter list : " + filterList); String joinlist = getStream().filter((s) -> { return s != null && !"".equals(s); }).collect(Collectors.joining(",")); System.out.println("joinlist:" + joinlist);}
IntSummaryStatistics
IntSummaryStatistics可以对数字的集合做统计。如常见的最大最小值、平均值、总和。
@Testpublic void intSummaryStatistics() { List<Integer> numbers = Arrays.asList(1, 3, 5, 7, 9, 11, 13, 15); IntSummaryStatistics stats = numbers.stream().mapToInt((x)->x).summaryStatistics(); System.out.println("最大的数:" + stats.getMax()); System.out.println("最小的数:" + stats.getMin()); System.out.println("和:" + stats.getSum()); System.out.println("数据长度:" + stats.getCount()); System.out.println("平均数:" + stats.getAverage());}
结果
阅读全文
0 0
- JAVA8新特性(四)——Stream API
- Java8新特性——Stream
- Java8新特性之Stream API
- Java8新特性之Stream API
- Java8新特性 Stream
- JAVA8新特性--stream
- java8新特性-- stream
- Java8新特性——时间API
- Java8新特性第3章(Stream API)
- JAVA8新特性[第四季]-强大的Stream API
- JAVA8新特性[第四季]-强大的Stream API
- java8新特性回顾(二)---stream api
- java8新特性之Stream API(二)
- java8新特性(四):Stream流的使用
- java8——Stream API
- java8 新特性 - Stream
- Java8新特性二--Stream
- Java8新特性Stream流
- Java多线程之生产者消费者
- Win7 x64 Eclipse无法识别手机 / adb interface有黄色感叹号,无法识别
- 设计模式--单例模式(JAVA语言实现)
- Proxy和InvocationHandler实现自己的AOP
- ubantu16.04安装英伟达显卡驱动
- JAVA8新特性(四)——Stream API
- 如何使用RedisTemplate访问Redis数据结构
- RTMPdump(libRTMP) 源代码分析 5: 建立一个流媒体连接 (NetConnection部分)
- 关于ext最近遇到的坑
- 【caffe实用技巧与bug排查】三步添加新layer及可能出现的bug
- 浅谈android布局UI优化
- 把字符串转换成整数
- Linux多进程和多线程的优缺点
- Swift