列表相关工具包。
Type | Name and description |
---|---|
static Object |
find(Object entities, String property, Object value) 从集合中根据属性查找元素,比find闭包性能提升2.5+倍 |
static Object |
find(Object entities, List<String> properties, List values) 从集合中根据属性查找元素,比find闭包性能提升2.5+倍 |
static List |
findAll(Object entities, String property, Object value) 从集合中根据属性查找元素列表,代替findAll闭包以提升性能 |
static List |
findAll(Object entities, List<String> properties, List values) 从集合中根据属性查找元素列表,代替findAll闭包以提升性能 |
static Map |
groupBy(Object entities, String property) 根据集合中的元素属性对集合进行分组,代替 groupBy 闭包以提升性能 |
static Map<String, Object> |
groupBy(Object entities, List<String> properties, String spliter = "." ) 根据集合中的元素属性对集合进行分组,代替 groupBy 闭包以提升性能 |
static List |
paginate(List list, Map params) 分页、排序,并返回当前页 |
static Collection |
sort(Collection list, String order = "asc", Object element = null, Closure elementSwapper = null, Object element2 = null ) 排序(含中文处理) |
static Number |
sum(Object entities, Object property = null, Integer scale = null ) 计算合计 |
Methods inherited from class | Name |
---|---|
class Object |
Object#wait(long), Object#wait(long, int), Object#wait(), Object#equals(Object), Object#toString(), Object#hashCode(), Object#getClass(), Object#notify(), Object#notifyAll() |
用于给行如“n.n.n”这种序号排序的转换器。
用于方法 sort 的参数 elementSwapper
从集合中根据属性查找元素,比find闭包性能提升2.5+倍
entities
- 实体对象集或数组property
- 属性名称,如果为null,则表示直接用集合元素进行比较value
- 属性值。如果是集合或数组,则包含属性值的,也认为是查找成功。 如 find(list, "name", ["name1", "name2"]),会返回name属性为name1或name2的元素。
从集合中根据属性查找元素,比find闭包性能提升2.5+倍
entities
- 实体对象集或数组properties
- 属性名称列表,不能为nullvalues
- 属性值列表从集合中根据属性查找元素列表,代替findAll闭包以提升性能
entities
- 实体对象集或数组property
- 属性名称,如果为null,则表示直接用集合元素进行比较value
- 属性值,可以是一个集合或数组从集合中根据属性查找元素列表,代替findAll闭包以提升性能
entities
- 实体对象集或数组properties
- 属性名称列表,不能为nullvalues
- 属性值列表或数组根据集合中的元素属性对集合进行分组,代替 groupBy 闭包以提升性能
entities
- 实体对象或Map集合或列表/数组property
- 属性名称,不能为null根据集合中的元素属性对集合进行分组,代替 groupBy 闭包以提升性能
entities
- 实体对象或Map集合或列表/数组properties
- 属性名称列表,不能为空spliter
- 用来分隔多个属性值的,默认为"."分页、排序,并返回当前页
params
- 分页排序的参数Map,包括:sort、order、offset、max排序(含中文处理)
和原始的使用闭包的Collection.sort比较。
list
- 要排序的集合order
- asc/desc,排序顺序element
- 排序属性名,如name;可以为“a.b”,表明根据属性a的子属性b进行排序,支持4级;或者获得排序信息的闭包。elementSwapper
- 排序时,对排序数据进行二次处理的闭包,包含三个参数:用于排序的属性值列表、当前属性值、当前元素。例如闭包 sequenceSwapper,可以将值“1.1”转成“00001.00001.00000...”再排序element2
- 当使用属性element排序时,如果两个元素的属性值一样,可以用这个补充属性做二次比较;如果是字符串则同参数element一样可以支持4级,也可以是获得排序信息的闭包。计算合计
避免使用大量闭包、并且能对其他数字结果进行舍入和非空处理,相对使用闭包的Collection.sum,性能提升2~3倍甚至10倍以上。
示例:assert 1 == CollectionUtils.sum( [[x:1, y:2]], 'x' )
assert 3 == CollectionUtils.sum( [[x:1, y:2]], ['x','y'] )
assert 3 == CollectionUtils.sum( [x:1, y:2] )
assert 6 == CollectionUtils.sum( [1,2,3] )
assert 15== CollectionUtils.sum( [[2011:5, 2012:10, 2013:15]], [2011, 2012] )
entities
- 实体对象集或数组property
- 数字属性名称或者名称列表,默认为null,即将实体对象直接相加、或者实体对象是Map时将其所有value相加scale
- 小数精度(四舍五入),默认为null,即不额外处理精度