流是来自源的对象序列,支持聚合操作。这些是在Java 8中引入的。
使用Java 8,Collection接口具有两种生成Stream的方法。
stream() -返回一个以集合为源的顺序流。
parallelStream() -返回一个以集合为源的并行Stream。
对流的一些操作是-
sorted -sorted方法用于按字典顺序或升序对流进行排序
List id = Arrays.asList("Objects","Classes","Interfaces");
List output = id.stream().sorted().collect(Collectors.toList());map -map方法根据作为参数传递的谓词将集合中的元素映射到其他对象
List list1= Arrays.asList(1,3,5,7); List finalList = list1.stream().map(a -> a * a * a).collect(Collectors.toList());
filter -filter方法用于根据传递的Predicate参数选择元素
List id = Arrays.asList(“Classes","Methods","Members");
List output = id.stream().filter(s -> s.startsWith("M")).collect(Collectors.toList());上面的三个操作是中间操作。现在让我们看一下终端操作
collect -collect方法返回中间操作的结果
List id = Arrays.asList(“Classes","Methods","Members");
List output = id.stream().filter(s -> s.startsWith("M")).collect(Collectors.toList());forEach-此方法迭代流中的每个元素
List list1 = Arrays.asList(1,3,5,7); List finalList = list1.stream().map(a ->a * a * a).forEach(b->System.out.println(b));
让我们看一个示例来说明Stream的用法-
import java.util.*;
import java.util.stream.*;
public class Example {
public static void main(String args[]) {
List<Integer> list1 = Arrays.asList(11,22,44,21); //creating an integer list
List<String> id = Arrays.asList("Objects","Classes","Methods");
//创建一个字符串列表
//映射方法
List<Integer> answer = list1.stream().map(x -> x*x).collect(Collectors.toList());
System.out.println(answer);
//过滤方法
List<String> output = id.stream().filter(x->x.startsWith("M")).collect(Collectors.toList());
System.out.println(output);
}
}输出结果
[121, 484, 1936, 441] [Methods]