import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import com.ibatis.common.beans.Probe; import com.ibatis.common.beans.ProbeFactory; /** * <pre> * * </pre> * * @author liuhongbo * @version $Id: YHDCollectionUtils.java, v 0.1 2013-12-4 上午09:50:53 liuhongbo Exp $ */ public class YHDCollectionUtils { private YHDCollectionUtils(){} private static final Probe PROBE = ProbeFactory.getProbe(); @SuppressWarnings("rawtypes") public static final Collection NULL_COLLECTION = new NullCollection(); @SuppressWarnings("unchecked") public static final <T> Collection<T> nullCollection() { return (List<T>) NULL_COLLECTION; } /** * @author liuhongbo * <pre> * 批量获取map中的值 * </pre> * * @param <K> * @param <V> * @param keys * @param source * @return */ public static <K,V> List<V> getAllFormMap(List<K> keys,Map<K,V> source) { List<V> values = Collections.emptyList(); if (keys != null && !keys.isEmpty() && source != null && !source.isEmpty()) { values = new ArrayList<V>(); for (K k : keys) { values.add(source.get(k)); } } return values; } /** * @author liuhongbo * <pre> * 从List中获取valueProp组成一个新的list * </pre> * * @param <E> * @param list * @param valueProp * @return */ public static <E,K> List<K> getValueList(List<E> list, String valueProp) { List<K> valueList = Collections.emptyList(); if (CollectionUtils.isNotEmpty(list)) { list.removeAll(nullCollection()); valueList = new ArrayList<K>(list.size()); for (E e : list) { @SuppressWarnings("unchecked") K value = (K)PROBE.getObject(e, valueProp); valueList.add(value); } } return valueList; } /** * @author liuhongbo * <pre> * 用list生成一个map,keyProp 为指定的key,valueProp 为指定是value * </pre> * * @param <K> * @param <V> * @param <E> * @param list * @param keyProp * @param valueProp * @return */ @SuppressWarnings("unchecked") public static <K,V,E> Map<K,V> listforMap(List<E> list, String keyProp, String valueProp) { Map<K,V> map = Collections.emptyMap(); if (CollectionUtils.isNotEmpty(list)) { list.removeAll(nullCollection()); map = new HashMap<K, V>(list.size()); for (E object : list) { K key = (K)PROBE.getObject(object, keyProp); Object value = null; if (StringUtils.isEmpty(valueProp)) { value = object; } else { value = PROBE.getObject(object, valueProp); } map.put(key, (V)value); } } return map; } /** * @author liuhongbo * <pre> * list 生成一个Map<K,List<V>> * </pre> * * @param <K> * @param <V> * @param <E> * @param list * @param keyProp * @param valueProp * @return */ @SuppressWarnings("unchecked") public static <K,V,E> Map<K,List<V>> listforListMap(List<E> list, String keyProp, String valueProp) { Map<K, List<V>> map = Collections.emptyMap(); if (CollectionUtils.isNotEmpty(list)) { list.removeAll(nullCollection()); map = new HashMap<K, List<V>>(list.size()); V value = null; for (E object : list) { K key = (K)PROBE.getObject(object, keyProp); if (StringUtils.isEmpty(valueProp)) { value = (V)object; } else { value = (V)PROBE.getObject(object, valueProp); } List<V> values = map.get(key); if (values == null) { values = new ArrayList<V>(); } values.add(value); map.put(key, values); } } return map; } }
相关推荐
C# Util 实用工具类 ,包含:Json、Net、Time、Compress、Config、Enums、File等等等常用使用工具类
STM32开发工具 TCP&UDP测试工具STM32开发工具 TCP&UDP测试工具STM32开发工具 TCP&UDP测试工具STM32开发工具 TCP&UDP测试工具STM32开发工具 TCP&UDP测试工具STM32开发工具 TCP&UDP测试工具STM32开发工具 TCP&UDP测试...
提供Swift丰富的扩展和实用工具类,并大多数支持Objective-C。.zip提供Swift丰富的扩展和实用工具类,并大多数支持Objective-C。.zip提供Swift丰富的扩展和实用工具类,并大多数支持Objective-C。.zip提供Swift丰富...
post方法等实用工具类 强大的工具类 新手方便快速编程
fastjson实用工具类
JAVA实用工具类
实用工具类开发和维护会耗费程序员的时间。GS通过提供几个高质量的库,从而简化了此过程,您可以将这些库轻松集成到现有的代码库中。
[工具类] XML 实用工具类 .java.txt [工具类] XML工具类2 .java.txt [工具类] 测试Mysql的最大连接数 .java.txt [工具类] 读取、打印输出、保存xml .java.txt [工具类] 分页split_page.jsp .jsp.txt [工具类] 获得...
[工具类] XML 实用工具类 .java.txt [工具类] XML工具类2 .java.txt [工具类] 测试Mysql的最大连接数 .java.txt [工具类] 读取、打印输出、保存xml .java.txt [工具类] 分页split_page.jsp .jsp.txt [工具类] 获得...
java实用工具类介绍
- 非模态计时器窗口,使用QTime类对象currentTime与toString函数 - 模拟传送文件 - 使用QThread,在进度条对话框类中以成员变量的形式分发任务 `TransferTask* m_task;`,并在进度条对话框初始化函数中启用工作...
主要为大家详细介绍了java拓展集合工具类CollectionUtils,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
java开发工作多年总结的的一些工具类; 包括有: 1、常用的日期类操作 2、excel操作 3、xml操作 4、集成科大讯飞语言合成工具类; 5、集合类操作(list,map,array) 6、FTP工具类 7、csv操作 8、file文件类操作 9...
很实用的安卓开发工具类,开发必备,日期处理工具类,IO流转换工具类,打印日志工具类,屏幕,字符串工具类,Toast工具类,弹框工具类.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
系统封装工具S&R&SV9.6.0819
RSA工具类,囊括了 生成密钥对、私钥解密、公钥加密、私钥签名、公钥验证的方法,并且其中有例子,可直接运行。
C#常用工具类代码集合Util(自己工作总结),欢迎分享给大家,一起进步,有什么问题可以找我沟通,谢谢大家。
常用、实用工具
非常实用的JDBC 工具类,用起来非常的方便 适合新手练习使用
一个简单实用的javascript AJAX 工具类; 简单应用的时候, 你不需导入像prototype,jQuery那样大的类库