谷神后端数据收集

文章介绍了四个Java函数collectList,collectSet,collectSet(list),和collect,用于从列表或map中收集指定字段的数据,支持判空和去重。collect函数存在空间复杂度问题。
摘要由CSDN通过智能技术生成
默认数据收集
/**
 * collectList
 * 默认数据收集:不判空、不去重。
 *
 * @param $list:list:列表。
 * @param $field:string:字段。
 *
 * @return list
 *
 */
#function collectList($list, $field)
	#if ($vs.util.isList($list))
		#set($result = $vs.util.newList())
		#foreach($row in $list)
			#set($value = $row)
			#if ($vs.util.isNotNull($field))
				#set($value = $row.get($field))
			#end
			$result.add($value)
		#end
		return $result
	#end
	return null
#end
集合数据收集
/**
 * collectSet
 * 集合数据收集list实现:判空、去重。
 *
 * @param $list:list:列表。
 * @param $field:string:字段。
 *
 * @return list
 *
 */
#function collectSet($list, $field)
	#if ($vs.util.isList($list))
		#set($result = $vs.util.newList())
		#set($set = $vs.util.newList())
		#foreach($row in $list)
			#set($value = $row)
			#if ($vs.util.isNotNull($field))
				#set($value = $row.get($field))
			#end
			#if ($vs.util.isNotNull($value) and !$set.contains($value))
				$result.add($value)
				$set.add($value)
			#end
		#end
		return $result
	#end
	return null
#end
/**
 * collectSet
 * 集合数据收集set实现:判空、去重。
 *
 * @param $list:list:列表。
 * @param $fieldId:string:字段。
 *
 * @return list
 *
 */
#function collectSet($list, $fieldId)
	#set($result = $vs.util.newList())
	#if (!$vs.util.isList($list))
		return $result
	#end
	#set($set = $vs.util.newHashSet())
	#foreach($row in $list)
		#set($value = $row)
		#if ($vs.util.isNotNull($fieldId))
			#set($value = $row.get($fieldId))
		#end
		#if ($vs.util.isNotNull($value) and $set.add($value))
			$result.add($value)
		#end
	#end
	return $result
#end
扁平化数据收集
/**
 * flattenCollectList
 * 扁平化数据收集:不判空、不去重。
 *
 * @param $list:list:列表。
 * @param $field:string:字段。
 *
 * @return list:列表
 *
 */
#function flattenCollectList($list, $field)
	#if ($vs.util.isList($list))
		#set($result = $vs.util.newList())
		#foreach($row in $list)
			#set($value = $row)
			#if ($vs.util.isNotNull($field))
				#set($value = $row.get($field))
			#end
			#if ($vs.util.isList($value))
				$result.addAll($value)
			#else
				$result.add($value)
			#end
		#end
		return $result
	#end
	return null
#end
collect
/**
 * collect
 *
 * @param $data:数据
 * @param $field:string:收集
 *
 * @return void
 * 此函数空间复杂度爆炸,不可用
 * 
 */
#function collect($data, $field)
	#if ($vs.util.isMap($data))
		#set($pos = $vs.util.strPos($field, '.'))
		#if ($pos == -1)
			return $data.get($field)
		#else
			return @collect($data.get($vs.util.substring($field, 0, $pos)), $vs.util.substring($field, $pos + 1))
		#end
	#end
	#if ($vs.util.isList($data))
		#set($result = $vs.util.newList())
		#foreach ($item in $data)
			$result.add(@collect($item, $field))
		#end
		return $result
	#end
#end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值