Java Stream流常用功能示例

本文介绍了Java8中Stream API的实用功能,包括按条件过滤、指定字段排序、去重以及映射操作。通过实例展示了如何使用Lambda表达式进行高效的数据处理,如根据特定条件过滤集合、按字段正序或倒序排列、利用TreeSet实现去重,并演示了如何将数据转换成Map。这些技巧在日常开发中非常常见,能提升代码的简洁性和效率。
摘要由CSDN通过智能技术生成

Steam流是Java8的新特性,今个工作中经常用的功能写法

按条件过滤

collect.stream()
        .filter(orderDetail -> orderDetail.getOrderNo().equals(resp.getOrderNo()))
        .collect(Collectors.toList());
  • collect:替换为自己的集合
  • orderDetail :随意起个名字就行,代表集合中的对象
  • filter:这里是按照满足的条件来进行过滤的,是lamda表示写法

按指定字段排序

collect.stream()
		.sorted(Comparator.comparing(AgreementResp::getAgreementNo)
		.reversed())
		.collect(Collectors.toList());
  • collect:替换为自己的集合
  • AgreementResp:替换为集合中的对象类型
  • getAgreementNo:替换为需要排序字段的get方法
  • reversed():逆序排序
  • 其他都是固定写法

按条件去重

collect.stream()
               .collect(Collectors.collectingAndThen(Collectors.toCollection(
               () -> new TreeSet<>(Comparator.comparing(AgreementResp::getAgreementNo))),ArrayList::new));
  • collect:替换为自己的集合
  • AgreementResp:替换为集合中的对象类型
  • getAgreementNo:替换为去重字段的get方法
  • 其他都是固定写法

tips:返回的集合中的元素跟原集合中的元素都是同一个对象引用,改变其中一个中的对象属性,另一个也会相应的变化,所有如果要做改变,请使用深拷贝重新new一个对象

映射map

 Map<Integer, EmployeeInfoDto> userInfoMap = userInfoList.stream().
              collect(Collectors.toMap(EmployeeInfoDto::getEId, account -> account, (key1, key2) -> key2));

分组(GroupBy)

 Map<Integer, List<EmployeeInfoDto>> userInfoMap = userInfoList.stream().
 collect(Collectors.groupingBy(EmployeeInfoDto::getEId));
当涉及到处理(Stream)的时候,有一些常用的方法可以帮助我们进行各种操作和转换。以下是一些示例: 1. `filter()`:根据给定的条件过滤中的元素。例如,过滤出大于等于10的元素: ```java List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); List<Integer> filteredNumbers = numbers.stream() .filter(num -> num >= 10) .collect(Collectors.toList()); ``` 2. `map()`:将中的元素转换成其他形式。例如,将字符串转换为大写: ```java List<String> words = Arrays.asList("hello", "world"); List<String> uppercaseWords = words.stream() .map(String::toUpperCase) .collect(Collectors.toList()); ``` 3. `forEach()`:对中的每个元素执行特定操作。例如,打印中的每个元素: ```java List<String> fruits = Arrays.asList("apple", "banana", "orange"); fruits.stream() .forEach(System.out::println); ``` 4. `sorted()`:对中的元素进行排序。例如,按照字母顺序对字符串进行排序: ```java List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); List<String> sortedNames = names.stream() .sorted() .collect(Collectors.toList()); ``` 5. `limit()`:限制中元素的数量。例如,获取中前3个元素: ```java List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); List<Integer> limitedNumbers = numbers.stream() .limit(3) .collect(Collectors.toList()); ``` 这只是一些常见的方法示例(Stream)还有许多其他方法,可以根据具体需求进行使用和组合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值