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

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());
posted @ 2023-04-26 11:07  niaonao  阅读(0)  评论(0)    收藏  举报  来源