博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于集合的工具类
阅读量:6666 次
发布时间:2019-06-25

本文共 4981 字,大约阅读时间需要 16 分钟。

/** * Copyright (c) 2005-2012 springside.org.cn */package com.thinkgem.jeesite.common.utils;import java.util.ArrayList;import java.util.Collection;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import org.apache.commons.beanutils.PropertyUtils;import org.apache.commons.lang3.StringUtils;import com.thinkgem.jeesite.modules.sys.entity.User;/** * Collections工具集. * 在JDK的Collections和Guava的Collections2后, 命名为Collections3. * @author calvin * @version 2013-01-15 */@SuppressWarnings("rawtypes")public class Collections3 {    /**     * 提取集合中的对象的两个属性(通过Getter函数), 组合成Map.     *      * @param collection 来源集合.     * @param keyPropertyName 要提取为Map中的Key值的属性名.     * @param valuePropertyName 要提取为Map中的Value值的属性名.     */    @SuppressWarnings("unchecked")    public static Map extractToMap(final Collection collection, final String keyPropertyName,            final String valuePropertyName) {        Map map = new HashMap(collection.size());        try {            for (Object obj : collection) {                map.put(PropertyUtils.getProperty(obj, keyPropertyName),                        PropertyUtils.getProperty(obj, valuePropertyName));            }        } catch (Exception e) {            throw Reflections.convertReflectionExceptionToUnchecked(e);        }        return map;    }    /**     * 提取集合中的对象的一个属性(通过Getter函数), 组合成List.     *      * @param collection 来源集合.     * @param propertyName 要提取的属性名.     */    @SuppressWarnings("unchecked")    public static List extractToList(final Collection collection, final String propertyName) {        List list = new ArrayList(collection.size());        try {            for (Object obj : collection) {                list.add(PropertyUtils.getProperty(obj, propertyName));            }        } catch (Exception e) {            throw Reflections.convertReflectionExceptionToUnchecked(e);        }        return list;    }    /**     * 提取集合中的对象的一个属性(通过Getter函数), 组合成由分割符分隔的字符串.     *      * @param collection 来源集合.     * @param propertyName 要提取的属性名.     * @param separator 分隔符.     */    public static String extractToString(final Collection collection, final String propertyName, final String separator) {        List list = extractToList(collection, propertyName);        return StringUtils.join(list, separator);    }    /**     * 转换Collection所有元素(通过toString())为String, 中间以 separator分隔。     */    public static String convertToString(final Collection collection, final String separator) {        return StringUtils.join(collection, separator);    }    /**     * 转换Collection所有元素(通过toString())为String, 每个元素的前面加入prefix,后面加入postfix,如
mymessage
。 */ public static String convertToString(final Collection collection, final String prefix, final String postfix) { StringBuilder builder = new StringBuilder(); for (Object o : collection) { builder.append(prefix).append(o).append(postfix); } return builder.toString(); } /** * 判断是否为空. */ public static boolean isEmpty(Collection collection) { return (collection == null || collection.isEmpty()); } /** * 取得Collection的第一个元素,如果collection为空返回null. */ public static
T getFirst(Collection
collection) { if (isEmpty(collection)) { return null; } return collection.iterator().next(); } /** * 获取Collection的最后一个元素 ,如果collection为空返回null. */ public static
T getLast(Collection
collection) { if (isEmpty(collection)) { return null; } //当类型为List时,直接取得最后一个元素 。 if (collection instanceof List) { List
list = (List
) collection; return list.get(list.size() - 1); } //其他类型通过iterator滚动到最后一个元素. Iterator
iterator = collection.iterator(); while (true) { T current = iterator.next(); if (!iterator.hasNext()) { return current; } } } /** * 返回a+b的新List. */ public static
List
union(final Collection
a, final Collection
b) { List
result = new ArrayList
(a); result.addAll(b); return result; } /** * 返回a-b的新List. */ public static
List
subtract(final Collection
a, final Collection
b) { List
list = new ArrayList
(a); for (T element : b) { list.remove(element); } return list; } /** * 返回a与b的交集的新List. */ public static
List
intersection(Collection
a, Collection
b) { List
list = new ArrayList
(); for (T element : a) { if (b.contains(element)) { list.add(element); } } return list; } public static void main(String[] args) { List
list=new ArrayList
(); list.add("aa"); list.add("bb"); System.out.println(Collections3.convertToString(list, "-")); User user1 = new User(); user1.setName("大山"); User user2 = new User(); user2.setName("李四"); List
listUsers = new ArrayList
(); listUsers.add(user1); listUsers.add(user2); System.out.println(Collections3.extractToString(listUsers, "name", "-")); }}

 

转载于:https://www.cnblogs.com/person008/p/9101506.html

你可能感兴趣的文章
面试官的七种武器:Java篇
查看>>
解决Layui的switch样式显示问题
查看>>
ubuntu修改图标的方式
查看>>
一张图轻松搞懂javascript event对象的clientX,offsetX,screenX,pageX区别
查看>>
使用cookie模拟登陆抽屉网并点赞
查看>>
5.Swift枚举|结构体|类|属性|方法|下标脚本|继承
查看>>
AI人工智能顶级实战工程师 课程大纲
查看>>
node.js BootStrap安装
查看>>
RAC环境下的备份与恢复(三)
查看>>
另类的ip地址伪装折腾记
查看>>
监控平台实施方案
查看>>
AIX5.3 rootvg备份与恢复
查看>>
Hadoop运维记录系列(十七)
查看>>
Windows Server 2012 存储 (五) 支持SQL over SMB
查看>>
有用的正则表达式
查看>>
Linux下搭建Apache服务器(完整版)
查看>>
mysql中的数据导入与导出
查看>>
聚合BGP得到的路由
查看>>
Open-E DSS V7 应用系列之五 构建软件NAS
查看>>
培训总结---方向比努力重要
查看>>