Lambda将List<Long>转换成List<String>

说明
将Long转换为字符串的方式有很多种,如toString,valueOf,拼接字符串,new String()等。

  1. 将String集合转换成Long集合
List<String> ids = Arrays.asList("1", "2", "3", "4", "5");
List<Long> collect = ids.stream().map(Long::parseLong).collect(Collectors.toList());
  1. 将Long集合转换成String集合
List<Long> ids = Arrays.asList(1L, 2L, 3L, 4L, 5L);
List<String> collect = ids.stream().map(String::valueOf).collect(Collectors.toList());
  1. 出现警告的原因是因为推荐使用方法引用(就是上面的写法)
    // 出现警告的写法
List<Long> collect = ids.stream().map(id -> id.toString()).collect(Collectors.toList());
  1. 使用String的toString()或者Long的toString()报错
    // 出现报错
List<String> collect = ids.stream().map(String::toString).collect(Collectors.toList());

这是因为toString方法不需要参数,但是再map中是一个函数接口,默认是要传参数的。
可以了解一下:https://blog.csdn.net/weixin_44415764/article/details/107535276

<R> Stream<R> map(Function<? super T, ? extends R> mapper);
  1. 最后,使用map方法获取对象中的数据后建议过滤一下为null的数据
List<User> list = Arrays.asList(
        new User("段誉","男",18),
        new User("段誉","男",18),
        new User("段誉","男",14),
        new User("段誉","男",27),
        new User("段誉","男",null),
        new User("段誉","男",36)
);

// 注意点:如果查询的获取list中的所有年龄时,返回结果还是6个,一般情况下建议做过滤处理

list.stream()
	.map(User::getAge)
	.filter(ObjectUtil::isNotEmpty) // 将为空的数据过滤掉
	.map(String::valueOf)
	.collect(Collectors.toList());

总结:以上就是本篇文章的全部内容,希望能对大家的学习有所帮助,评论区留下 “管用" ,记得三联哦。

还有其他知识分享,欢迎拜访 https://blog.csdn.net/weixin_40379712?type=blog

猜你喜欢

转载自blog.csdn.net/weixin_40379712/article/details/129813342