Java 8的Stream API引入了一些强大的功能,可以使集合的操作更加简洁和高效。以下是一些常见的实用操作及其示例:
- 过滤(Filter):根据指定的条件过滤集合中的元素。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
List<Integer> evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
System.out.println(evenNumbers); // 输出:[2, 4, 6]
同时过滤也可以实现筛选两个集合的共有元素,或者独有元素
List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> list2 = Arrays.asList(4, 5, 6, 7, 8);
//共有元素
List<Integer> commonElements = list1.stream()
.filter(list2::contains)
.collect(Collectors.toList());
System.out.println(commonElements);
//List1的独有元素
List<Integer> oList1 = list1.stream().
filter(element->!list2.contains(element))
.collect(Collectors.toList());
System.out.println(oList1);
//list2的独有元素
List<Integer> oList2 = list2.stream()
.filter(element->!list2.contains(element))
.collect(Collectors.toList());
System.out.println(oList2);
- 映射(Map):将集合中的元素映射到另一个值。
List<String> names = Arrays.asList("John", "Jane", "Mike");
List<Integer> nameLengths = names.stream()
.map(String::length)
.collect(Collectors.toList());
System.out.println(nameLengths); // 输出:[4, 4, 4]
- 排序(Sort):对集合中的元素进行排序。
List<String> fruits = Arrays.asList("apple", "banana", "orange");
List<String> sortedFruits = fruits.stream()
.sorted()
.collect(Collectors.toList());
System.out.println(sortedFruits); // 输出:[apple, banana, orange]
- 匹配(Match):判断集合中的元素是否满足指定条件。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
boolean allEven = numbers.stream().allMatch(n -> n % 2 == 0);
boolean anyEven = numbers.stream().anyMatch(n -> n % 2 == 0);
System.out.println(allEven); // 输出:false
System.out.println(anyEven); // 输出:true
- 归约(Reduce):将集合中的元素进行累积计算。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
int sum = numbers.stream().reduce(0, (a, b) -> a + b);
System.out.println(sum); // 输出:21
这些只是Stream API中的一些常见操作,还有很多其他的功能和操作可以进行。通过结合不同的操作,可以实现更复杂和灵活的集合处理逻辑。