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的主要内容,如果未能解决你的问题,请参考以下文章

JDK8系列之Stream API入门教程和示例

jdk8新特性---list.stream

jdk8新特性Stream

jdk8新特性-Stream流详解及使用样例(Stream创建使用收集并行流注意事项)

jdk8新特性-Stream流详解及使用样例

jdk8的新特性