list转map
java
/**
* list2map
* list转map:支持全量映射、单字段映射。
*
* @param $list:list:列表。
* @param $key:string:键。
* @param $field:string:值字段域。
*
* @return map
*
*/
#function list2map($list, $key, $field)
#if ($vs.util.isList($list) and $vs.util.isString($key))
#set($map = $vs.util.newMap())
#foreach($row in $list)
#set($value = $row)
#if (!$vs.util.isNull($field))
#set($value = $row.get($field))
#end
$map.put($row.get($key), $value)
#end
return $map
#end
return null
#end
java
// list2map
#set($map = @list2map($list, $key, $field))
list转map:动态脚本模式
java
/**
* list2mapByScript
* list转map:动态脚本模式。
*
* @param $list:list:列表。
* @param $key:string:键。
* @param $field:string:值字段域。
*
* @return map
*
*/
#function list2mapByScript($list, $key, $field)
#if ($vs.util.isList($list) and $vs.util.isString($key))
#set($map = $vs.util.newMap())
#foreach($row in $list)
#set($value = $row)
#if (!$vs.util.isNull($field))
#set($value = $row.get($field))
#end
#set($script = 'return $row.' + $key)
$map.put($vs.proc.executeScript($script, $vs.util.newMap('row', $row)), $value)
#end
return $map
#end
return null
#end
java
// list2mapByScript
#set($map = @list2mapByScript($list, $key, $field))
list转map:高阶函数
java
/**
* list2mapByFun
* list转map:高阶函数。
*
* @param $list:list:列表。
* @param $keyFun:map:键函数。
* @param $valueFun:map:值函数。
*
* @return map
*
*/
#function list2mapByFun($list, $keyFun, $valueFun)
#if ($vs.util.isList($list) and $vs.util.isMap($keyFun))
#set($map = $vs.util.newMap())
#foreach($row in $list)
#set($value = $row)
#if ($vs.util.isMap($valueFun))
#set($value = $valueFun.fun($row))
#end
$map.put($keyFun.fun($row), $value)
#end
return $map
#end
return null
#end
java
// list2mapByFun
#set($map = @list2mapByFun($list, $vs.util.newMap('fun', @keyFun), $vs.util.newMap('fun', @valueFun)))