Java 8引入了Stream API,这是Java集合操作的一个重大改进。Stream API提供了一种高效且易于使用的处理数据的方式。
Stream是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。注意:Stream自己不会存储元素,它不会改变源对象,反而它的操作会返回一个全新的Stream,且它的操作是延迟执行的,这意味着它们会等到需要结果的时候才执行。
以下是Stream的一些常用操作:
java
- List
names = Arrays.asList("John", "Peter", "Susan", "Kim", "Jen", "George", "Alan"); - List
namesWithJ = names.stream() - .filter(name -> name.startsWith("J"))
- .collect(Collectors.toList());
- List
upperCaseNames = names.stream() - .map(String::toUpperCase)
- .collect(Collectors.toList());
- List
sortedNames = names.stream() - .sorted()
- .collect(Collectors.toList());
List nameList = names.stream().collect(Collectors.toList());
- //用stream将name转为map集合
- Map
collect1 = Arrays.stream(names).collect(Collectors.toMap( - s -> s.length(),
- s -> s,
- (s1, s2) -> s1 + "," + s2 //出现两个相同的key时,合并value
- ));
- //用stream将name转为map集合,并合并相同长度的name
- System.out.println(collect1);
-
- Map
> collect = Arrays.stream(names).collect(Collectors.groupingBy(String::length)); - System.out.println(collect);
boolean allNamesStartWithJ = names.stream().allMatch(name -> name.startsWith("J"));
String joinedNames = names.stream().reduce("", (a, b) -> a + ", " + b);