Java:List处理流操作

郎家岭伯爵 2023年07月10日 582次浏览

前言

总结一下 Java 语言中常用的 List 处理流操作。

实现

过滤元素

使用 filter() 方法根据指定的条件过滤列表中的元素。

代码:

  1. List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
  2. List<Integer> evenNumbers = numbers.stream()
  3. .filter(n -> n % 2 == 0)
  4. .collect(Collectors.toList());
  5. System.out.println("evenNumbers:" + evenNumbers);

输出:

  1. evenNumbers:[2, 4]

遍历元素

使用 forEach() 方法对列表中的每个元素执行操作。

代码:

  1. List<String> list = Arrays.asList("apple", "banana", "orange");
  2. list.stream().forEach(System.out::println);

输出:

  1. apple
  2. banana
  3. orange

转换元素

使用 map() 方法将列表中的元素按照指定的方式进行转换。

代码:

  1. List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
  2. List<Integer> nameLengths = names.stream()
  3. .map(String::length)
  4. .collect(Collectors.toList());
  5. System.out.println("nameLengths:" + nameLengths);

输出:

  1. nameLengths:[5, 3, 7]

排序元素

使用 sorted() 方法对列表中的元素进行排序。

  1. List<Integer> numbers1 = Arrays.asList(5, 2, 8, 1, 6);
  2. List<Integer> sortedNumbers = numbers1.stream()
  3. .sorted()
  4. .collect(Collectors.toList());
  5. System.out.println("sortedNumbers:" + sortedNumbers);

输出:

  1. sortedNumbers:[1, 2, 5, 6, 8]

统计元素

使用 count() 方法获取列表中元素的个数。

代码:

  1. List<String> names1 = Arrays.asList("Alice", "Bob", "Charlie");
  2. long count = names1.stream().count();
  3. System.out.println("count:" + count);

输出:

  1. count:3

匹配元素

  • 使用 anyMatch() 方法判断列表中是否存在满足指定条件的元素。
  • 使用 allMatch() 方法判断列表中是否所有元素都满足指定条件。

代码:

  1. List<Integer> numbers1 = Arrays.asList(1, 2, 3, 4, 5);
  2. boolean anyEven = numbers1.stream().anyMatch(n -> n % 2 == 0);
  3. System.out.println("anyEven:" + anyEven);

  4. List<Integer> numbers2 = Arrays.asList(1, 2, 3, 4, 5);
  5. boolean allEven = numbers2.stream().allMatch(n -> n % 2 == 0);
  6. System.out.println("allEven:" + allEven);

输出:

  1. anyEven:true
  2. allEven:false

归约操作

使用 reduce() 方法将列表中的元素进行归约操作,例如求和或求最大值。

代码:

  1. List<Integer> numbers3 = Arrays.asList(1, 2, 3, 4, 5);
  2. int sum = numbers3.stream().reduce(0, (a, b) -> a + b);
  3. System.out.println("sum:" + sum);

输出:

  1. sum:15

去重元素

使用 distinct() 方法去除列表中的重复元素。

代码:

  1. List<Integer> numbers5 = Arrays.asList(1, 2, 2, 3, 3, 4, 5);
  2. List<Integer> distinctNumbers = numbers5.stream().distinct().collect(Collectors.toList());
  3. System.out.println("distinctNumbers:" + distinctNumbers);

输出:

  1. distinctNumbers:[1, 2, 3, 4, 5]

丢弃元素

使用 dropWhile() 方法丢弃列表中满足指定条件的元素,直到条件不再满足为止。

代码:

  1. List<Integer> numbers6 = Arrays.asList(1, 2, 3, 4, 5);
  2. List<Integer> droppedNumbers = numbers6.stream().dropWhile(n -> n < 3).collect(Collectors.toList());
  3. System.out.println("droppedNumbers:" + droppedNumbers);

输出:

  1. droppedNumbers:[3, 4, 5]

总结

总结一下 Java 语言中常用的 List 处理流操作。