Java中的流

流API是在Java8中引入的,用于处理对象集合。流是一系列支持各种方法的对象,这些方法可以通过流水线生成所需的结果。 Java stream的特点是——

null
  • 流不是数据结构,而是从集合、数组或I/O通道获取输入。
  • 流不会改变原始的数据结构,它们只按照流水线方法提供结果。
  • 每个中间操作都会被延迟执行并返回一个流,因此各种中间操作都可以被流水线处理。终端操作标记流的结束并返回结果。

流上的不同操作- 中间操作:

  1. 地图: map方法用于返回一个流,该流包含将给定函数应用于该流元素的结果。 List number = Arrays.asList(2,3,4,5); List square = number.stream().map(x->x*x).collect(Collectors.toList());
  2. 过滤器: filter方法用于根据作为参数传递的谓词选择元素。 List names = Arrays.asList("Reflection","Collection","Stream"); List result = names.stream().filter(s->s.startsWith("S")).collect(Collectors.toList());
  3. 分类: 排序方法用于对流进行排序。 List names = Arrays.asList("Reflection","Collection","Stream"); List result = names.stream().sorted().collect(Collectors.toList());

航站楼运营:

  1. 收集: collect方法用于返回对流执行的中间操作的结果。 List number = Arrays.asList(2,3,4,5,3); Set square = number.stream().map(x->x*x).collect(Collectors.toSet());
  2. forEach: forEach方法用于迭代流中的每个元素。 List number = Arrays.asList(2,3,4,5); number.stream().map(x->x*x).forEach(y->System.out.println(y));
  3. 减少: reduce方法用于将流的元素缩减为单个值。 reduce方法将二进制运算符作为参数。

    List number = Arrays.asList(2,3,4,5); int even = number.stream().filter(x->x%2==0).reduce(0,(ans,i)-> ans+i);

    这里ans变量被指定为0作为初始值,i被添加到其中。

演示使用流的程序

//a simple program to demonstrate the use of stream in java
import java.util.*;
import java.util.stream.*;
class Demo
{
public static void main(String args[])
{
// create a list of integers
List<Integer> number = Arrays.asList( 2 , 3 , 4 , 5 );
// demonstration of map method
List<Integer> square = number.stream().map(x -> x*x).
collect(Collectors.toList());
System.out.println(square);
// create a list of String
List<String> names =
Arrays.asList( "Reflection" , "Collection" , "Stream" );
// demonstration of filter method
List<String> result = names.stream().filter(s->s.startsWith( "S" )).
collect(Collectors.toList());
System.out.println(result);
// demonstration of sorted method
List<String> show =
names.stream().sorted().collect(Collectors.toList());
System.out.println(show);
// create a list of integers
List<Integer> numbers = Arrays.asList( 2 , 3 , 4 , 5 , 2 );
// collect method returns a set
Set<Integer> squareSet =
numbers.stream().map(x->x*x).collect(Collectors.toSet());
System.out.println(squareSet);
// demonstration of forEach method
number.stream().map(x->x*x).forEach(y->System.out.println(y));
// demonstration of reduce method
int even =
number.stream().filter(x->x% 2 == 0 ).reduce( 0 ,(ans,i)-> ans+i);
System.out.println(even);
}
}


输出:

[4, 9, 16, 25]
[Stream]
[Collection, Reflection, Stream]
[16, 4, 9, 25]
4
9
16
25
6

要点/观察:

  1. 流包括源,然后是组合在一起的零个或多个中间方法(流水线)和终端方法,以按照所述方法处理从源获得的对象。
  2. 流用于按照流水线方法计算元素,而不改变对象的原始值。

本文由 阿卡什奥哈 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享