前言
总结一下 Java 语言中常用的 List 处理流操作。
实现
过滤元素
使用 filter()
方法根据指定的条件过滤列表中的元素。
代码:
- List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
- List<Integer> evenNumbers = numbers.stream()
- .filter(n -> n % 2 == 0)
- .collect(Collectors.toList());
- System.out.println("evenNumbers:" + evenNumbers);
输出:
- evenNumbers:[2, 4]
遍历元素
使用 forEach()
方法对列表中的每个元素执行操作。
代码:
- List<String> list = Arrays.asList("apple", "banana", "orange");
- list.stream().forEach(System.out::println);
输出:
- apple
- banana
- orange
转换元素
使用 map()
方法将列表中的元素按照指定的方式进行转换。
代码:
- List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
- List<Integer> nameLengths = names.stream()
- .map(String::length)
- .collect(Collectors.toList());
- System.out.println("nameLengths:" + nameLengths);
输出:
- nameLengths:[5, 3, 7]
排序元素
使用 sorted()
方法对列表中的元素进行排序。
- List<Integer> numbers1 = Arrays.asList(5, 2, 8, 1, 6);
- List<Integer> sortedNumbers = numbers1.stream()
- .sorted()
- .collect(Collectors.toList());
- System.out.println("sortedNumbers:" + sortedNumbers);
输出:
- sortedNumbers:[1, 2, 5, 6, 8]
统计元素
使用 count()
方法获取列表中元素的个数。
代码:
- List<String> names1 = Arrays.asList("Alice", "Bob", "Charlie");
- long count = names1.stream().count();
- System.out.println("count:" + count);
输出:
- count:3
匹配元素
- 使用
anyMatch()
方法判断列表中是否存在满足指定条件的元素。 - 使用
allMatch()
方法判断列表中是否所有元素都满足指定条件。
代码:
- List<Integer> numbers1 = Arrays.asList(1, 2, 3, 4, 5);
- boolean anyEven = numbers1.stream().anyMatch(n -> n % 2 == 0);
- System.out.println("anyEven:" + anyEven);
- List<Integer> numbers2 = Arrays.asList(1, 2, 3, 4, 5);
- boolean allEven = numbers2.stream().allMatch(n -> n % 2 == 0);
- System.out.println("allEven:" + allEven);
输出:
- anyEven:true
- allEven:false
归约操作
使用 reduce()
方法将列表中的元素进行归约操作,例如求和或求最大值。
代码:
- List<Integer> numbers3 = Arrays.asList(1, 2, 3, 4, 5);
- int sum = numbers3.stream().reduce(0, (a, b) -> a + b);
- System.out.println("sum:" + sum);
输出:
- sum:15
去重元素
使用 distinct()
方法去除列表中的重复元素。
代码:
- List<Integer> numbers5 = Arrays.asList(1, 2, 2, 3, 3, 4, 5);
- List<Integer> distinctNumbers = numbers5.stream().distinct().collect(Collectors.toList());
- System.out.println("distinctNumbers:" + distinctNumbers);
输出:
- distinctNumbers:[1, 2, 3, 4, 5]
丢弃元素
使用 dropWhile()
方法丢弃列表中满足指定条件的元素,直到条件不再满足为止。
代码:
- List<Integer> numbers6 = Arrays.asList(1, 2, 3, 4, 5);
- List<Integer> droppedNumbers = numbers6.stream().dropWhile(n -> n < 3).collect(Collectors.toList());
- System.out.println("droppedNumbers:" + droppedNumbers);
输出:
- droppedNumbers:[3, 4, 5]
总结
总结一下 Java 语言中常用的 List 处理流操作。