JDK8新特性之stream
Posted onlyzhangmeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDK8新特性之stream相关的知识,希望对你有一定的参考价值。
stream中有很多方法,讲一些常用的。
1.forEach(),遍历方法,很简单,对于一般的遍历可以替代for循环
List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl"); strings.stream().forEach(System.out::println);
stream()是先将数组或列表流化,然后forEach()遍历并打印。这里用到::会在另一篇博文中专门说。
2.map(),用于映射数组或列表的结果,即对元素进行操作,然后按顺序输出或保存。
List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5); // 获取对应的平方数 List<Integer> squaresList = numbers.stream().map( i -> i*i).distinct().collect(Collectors.toList());
一般可以用于类型转换、或其他简单的映射。
3.filter(),过滤器,一般用于对元素数据的过滤
List<String>strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl"); // 获取空字符串的数量 long count = strings.stream().filter(string -> string.isEmpty()).count();
过滤方法的实现一般用->去实现,可以在括号中定制实现过滤方法。
4.limit(),limit 方法用于获取指定数量的流
Random random = new Random(); random.ints().limit(10).forEach(System.out::println);
5.sorted(),排序方法,很好理解。
Random random = new Random(); random.ints().limit(10).sorted().forEach(System.out::println);
6.Collector 进行一些归约操作
方法很多,这个后面详细说
List<String>strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl"); List<String> filtered = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList()); System.out.println("筛选列表: " + filtered); String mergedString = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.joining(", ")); System.out.println("合并字符串: " + mergedString);
toList是将流转换成List
join是将字符串以规定的格式输出,甚至可以规定前缀、后缀。
List<String>strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl"); List<String> filtered = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList()); System.out.println("筛选列表: " + filtered); StringmergedString = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.joining(", ")); System.out.println("合并字符串: " + mergedString);
以上是关于JDK8新特性之stream的主要内容,如果未能解决你的问题,请参考以下文章