使用 Java 8 Streams 的更多示例

分组示例

以下代码展示了如何使用 Collectors.groupingBy 方法对 scpItems 进行分组:

Map<String, List<ScpItemsEntity>> scpItemsHeadersGroupBy = scpItems.stream()
  .collect(Collectors.groupingBy(v -> entity.getMainOrgId() + "_" + v.getCustNo() 
  + "_" + v.getInvItemNo() + "_" + v.getPlant() + "_" + v.getDeptCode() + "_" + v.getSalesCode()));

排序示例

使用 sorted() 方法对 formNoList 进行排序,使得 FormNo 数字最大的在前方:

formNoList.sort((o1, o2) -> o2.compareTo(o1));

过滤示例

使用 filter() 方法对流中的元素进行过滤:

List<User> adults = list.stream()
  .filter(user -> user.getAge() >= 18)
  .collect(Collectors.toList());

映射示例

使用 map() 方法将流中的元素映射到另一个对象:

List<String> names = list.stream()
  .map(User::getName)
  .collect(Collectors.toList());

计数示例

使用 count() 方法计算流中元素的数量:

long count = list.stream().count();

遍历示例

使用 forEach() 方法遍历流中的元素:

list.stream().forEach(user -> System.out.println(user.getName()));

去重示例

使用 distinct() 方法去除流中的重复元素:

List<Integer> distinctAges = list.stream()
  .map(User::getAge)
  .distinct()
  .collect(Collectors.toList());

收集示例

使用 collect(Collectors.toList()) 方法将流中的元素收集到一个列表中:

List<User> userList = list.stream().collect(Collectors.toList());

使用 Spliterator

使用 spliterator() 方法对流进行分割:

Spliterator<User> spliterator = list.spliterator();
spliterator.forEachRemaining(user -> System.out.println(user.getName()));