Lambda的使用

常用Lambda处理

  • List<UserDto> to Map<Long,UserDto>
  • Map<Long,UserDto> to List<UserDto>
  • Map<Long,UserDto> to List<Long>
  • List<UserDto> to List<Long>
  • List排序
  • filter
  • map修改dto的值
  • foreach
  • sort
  • list跟据某个字段去重
  • list to map(key&value多个字段,防止duplicate key)
  • 求和
  • 分组

范例

public class MyLambdaTest {
    public static void main(String[] args) {

        List<UserDto> userDtoList = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            UserDto userDto = new UserDto();
            userDto.setId((long) i);
            userDto.setUserName("name" + i);
            userDto.setAge(10 + i);
            userDtoList.add(userDto);
        }

        //List<UserDto>  to  Map<Long,UserDto>
        Map<Long, UserDto> userDtoMap = userDtoList.stream().collect(Collectors.toMap(UserDto::getId, Function.identity()));

        //Map<Long,UserDto>  to  List<UserDto>
        List<UserDto> map2List = new ArrayList<UserDto>(userDtoMap.values());

        //Map<Long,UserDto>  to  List<Long>
        List<Long> map2keys = new ArrayList<Long>(userDtoMap.keySet());

        //List<UserDto>  to  List<Long>
        List<Long> userIds = userDtoList.stream().map(UserDto::getId).collect(Collectors.toList());

        //list排序
        userDtoList.sort(Comparator.comparing(UserDto::getUserName)); //按名字排序
        userDtoList.sort((p1, p2) -> {
            return p1.getUserName().toLowerCase().compareTo(p2.getUserName().toLowerCase());
        });

        userDtoList.sort(Comparator.comparing(p -> p.getUserName().toLowerCase()));//lambda表达式

        //filter
        List<UserDto> filterResult = userDtoList.stream().filter(p -> StringUtils.equals(p.getUserName(), "name3")).collect(Collectors.toList());

        //map的使用
        //map函数的主要功能是对List中的每个元素进行处理并返回,可以返回其它的数据类型
        //1.修改dto的值;
        List<UserDto> userDtos = userDtoList.stream().map(userDto -> {
            userDto.setAge(100);
            return userDto;
        }).collect(Collectors.toList());

        //foreach
        userDtoList.stream().forEach(userDto -> {
            userDto.setAge(90);
        });
    }
}
    //排序
    Comparator<WalletDto> comparator = (WalletDto d1, WalletDto d2) -> d1.getSortFlag().compareTo(d2.getSortFlag());
    Collections.sort(walletDtoList, comparator);

  //list去重
  unique = symbolContrasts.stream().collect(
                        Collectors.collectingAndThen(Collectors.toCollection(
                                () -> new TreeSet<>(Comparator.comparing(o -> o.getExchange()))), ArrayList::new)
                );

  //list to map(key&value多个字段,防止duplicate key)
  resMap = symbolContrasts.stream()
                        .distinct().collect(Collectors.toMap(k -> k.getPCoinType() + "_" + k.getPMoneyType(),
                                k -> k.getPCoinType() + "_" + k.getPMoneyType(), (k, v) -> v));
  //list to map(key&value多个字段)
  Map<String, PositionDto> resMap = positionDtos.stream()
                .collect(Collectors.toMap(k -> k.getExchange() + "_" + k.getFbgSymbol(), pos->pos));

//求和
BigDecimal principalPaid = repaymentInfoDtoList.stream().map(RepaymentInfoDto::getNormalPrincipal).reduce(BigDecimal.ZERO, BigDecimal::add);

//分组
Map<Integer, List<LoanInfoDto>> fundOrgIdMap = loanInfoDtos.stream().collect(Collectors.groupingBy(LoanInfoDto::getFundOrgId));
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容