Stream 实战集合常用转换 - List 篇

文章展示了如何使用Java的StreamAPI和Lambda表达式对List<CallInfo>集合进行操作,包括按元素属性去重、按条件过滤并修改属性、列表转Map、抽取元素属性集合、去重后拼接字符串以及按属性排序等常见数据处理场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.CallInfo 实体类

public class CallInfo implements Serializable{

	private static final long serialVersionUID = 1L;
	
	private String callbackurl="数据反馈接收地址";

	public String getCallbackurl() {
		return callbackurl;
	}

	public void setCallbackurl(String callbackurl) {
		this.callbackurl = callbackurl;
	}
	
	@Override
	public String toString() {
		return "CallInfo{" +
				"callbackurl='" + callbackurl + '\'' +
				'}';
	}
}

List 按照元素属性去重

  • 按元素属性去重
处理前:
list:[CallInfo{callbackurl='baidu.com'}, CallInfo{callbackurl='baidu.com'}, CallInfo{callbackurl=''}, CallInfo{callbackurl='dingding.com'}]
处理后:
list:[CallInfo{callbackurl=''}, CallInfo{callbackurl='baidu.com'}, CallInfo{callbackurl='dingding.com'}]
	List<CallInfo> list = callInfoDao.findCallInfoList();
	list = list.stream()
				.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getCallbackurl()))), ArrayList::new));

按照条件过滤集合并完善元素属性值

  • 按条件过滤元素
  • 修改元素属性值
处理前:
list:[CallInfo{callbackurl='baidu.com'}, CallInfo{callbackurl='baidu.com'}, CallInfo{callbackurl=''}, CallInfo{callbackurl='dingding.com'}]
处理后:
list:[CallInfo{callbackurl='http://baidu.com'}, CallInfo{callbackurl='http://baidu.com'}, CallInfo{callbackurl='http://dingding.com'}]
	List<CallInfo> list = callInfoDao.findCallInfoList();
	list = list .stream().filter(o -> StringUtils.isNotEmpty(o.getCallbackurl())).map(e->{
		e.setCallbackurl("http://" + e.getCallbackurl());
      return e;
	}).collect(Collectors.toList());

List 转 Map

  • list2Map
处理前:
list:[CallInfo{callbackurl='baidu.com'}, CallInfo{callbackurl='baidu.com'}, CallInfo{callbackurl=''}, CallInfo{callbackurl='dingding.com'}]
处理后:
map:{=CallInfo{callbackurl=''}, baidu.com=CallInfo{callbackurl='baidu.com'}, dingding.com=CallInfo{callbackurl='dingding.com'}}
	List<CallInfo> list = callInfoDao.findCallInfoList();
	Map<String, CallInfo> map = list.stream().collect(Collectors.toMap(CallInfo::getCallbackurl, t -> t, (a, b) -> a));

List 抽取元素属性集合

  • 集合元素属性抽取
处理前:
list:[CallInfo{callbackurl='baidu.com'}, CallInfo{callbackurl='baidu.com'}, CallInfo{callbackurl=''}, CallInfo{callbackurl='dingding.com'}]
处理后:
urlList:[baidu.com, baidu.com, , dingding.com]
	List<CallInfo> list = callInfoDao.findCallInfoList();
	List<String> urlList = list.stream().map(CallInfo::getCallbackurl).collect(Collectors.toList());

List 按照条件过滤后组装集合,字符串集合去重后按照特殊字符分割拼接

  • 按条件过滤元素
  • 集合元素去重
  • 按特殊分隔符拼接属性为字符串
处理前:
list:[CallInfo{callbackurl='baidu.com'}, CallInfo{callbackurl='baidu.com'}, CallInfo{callbackurl=''}, CallInfo{callbackurl='dingding.com'}]
处理后:
urlList:[baidu.com, baidu.com, dingding.com]
urlStr:baidu.com,dingding.com
	List<CallInfo> list = callInfoDao.findCallInfoList();
	List<String> urlList = list.stream()
	        .filter(o -> StringUtils.isNotEmpty(o.getCallbackurl()))
	        .map(CallInfo::getCallbackurl)
	        .collect(Collectors.toList());
	String urlStr = urlList.stream().distinct()collect(Collectors.joining(",".intern()));

List 按照元素属性排序

处理前:
list:[CallInfo{callbackurl='baidu.com'}, CallInfo{callbackurl='z.com'}, CallInfo{callbackurl=''}, CallInfo{callbackurl='dingding.com'}]
处理后:
list:[CallInfo{callbackurl='z.com'}, CallInfo{callbackurl='dingding.com'}, CallInfo{callbackurl='baidu.com'}, CallInfo{callbackurl=''}]
list:[CallInfo{callbackurl=''}, CallInfo{callbackurl='baidu.com'}, CallInfo{callbackurl='dingding.com'}, CallInfo{callbackurl='z.com'}]
	List<CallInfo> list = callInfoDao.findCallInfoList();
	list = list.stream()
	        .sorted(Comparator.comparing((CallInfo o) -> (o.getCallbackurl()), Comparator.nullsFirst(Comparator.reverseOrder())))
	        .collect(Collectors.toList());
	list = list.stream()
	        .sorted(Comparator.comparing((CallInfo o) -> (o.getCallbackurl()), Comparator.nullsFirst(Comparator.reverseOrder())).reversed())
	        .collect(Collectors.toList());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

niaonao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值