`
bo_hai
  • 浏览: 564734 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

实用工具类 && CollectionUtils

 
阅读更多
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;
	}
}

 

1
3
分享到:
评论

相关推荐

    工具类工具类

    工具类是编程实践中非常实用的组件,它们将常用功能集中在一起,使得代码更简洁、易读,同时也降低了出错的可能性。开发者可以根据具体需求创建自定义工具类,以满足项目中的特定需求。在设计工具类时,要遵循上述...

    工具类项目,开发经常用到的一些工具类

    例如,"CommonsUtils"很可能是一个类似于Apache Commons Lang或者Google Guava的库,提供了大量的实用工具方法。 1. **字符串处理**:在CommonsUtils中,可能会有对字符串进行格式化、拼接、查找替换、去除空白字符...

    java常用工具类整理

    这些工具类都是 Java 开发中常用的实用工具,可以帮助开发者快速高效地完成各种任务。 一、Spring 工具类 1. org.springframework.util.StringUtils 工具类用于判断字符串非空,常用的方法有 isEmpty()、hasText()...

    JAVA 工具类 项目

    3. **其他可能的工具类**:除了以上两个,项目可能还包含了其他实用工具类,如StringUtils(字符串操作)、NumberUtils(数值操作)、IOUtils(输入/输出流操作)、CollectionUtils(集合操作)等。这些工具类通常...

    java开发,30个常用工具类总结,全部来自项目实践中用到的工具类

    在Java开发中,工具类是程序员经常会用到的代码模块,它们封装了各种常见的操作,提高了代码的可重用性和可维护性。以下是对标题和描述中提到的几个常用工具类的详细说明: 1. **DateUtils**: `java.util.Date` 和 ...

    java常用工具类集合(也有转自他人的)

    "java常用工具类集合"是一个综合性的资源,它包含了从不同来源收集的实用工具类,旨在帮助开发者提高效率,减少代码重复。下面,我们将深入探讨这个主题,分析其中可能包含的知识点。 首先,`opslabJutil-master....

    SqlUtils工具类,Sql IN 条件拼接工具类

    `SqlUtils`工具类是Java开发中用于处理SQL语句拼接的一个实用工具,特别是针对包含`IN`条件的查询。在数据库操作中,`IN`关键字常用于筛选满足特定集合条件的记录。例如,假设我们需要查找ID在一组值中的用户,我们...

    apache工具类

    在描述中提到的 `StringUtil` 和 `CollectionUtils` 是Apache Commons中的两个核心工具类,它们分别针对字符串操作和集合操作提供了丰富的功能。让我们详细探讨一下这两个工具类以及其他可能的Util类。 **1. Apache...

    31个java工具类大汇总

    在Java编程语言中,工具类(Utils)是程序员在日常开发中经常使用的代码库,它们提供了各种实用功能,简化了许多常见的任务。以下是对标题“31个java工具类大汇总”及描述中提及的知识点的详细说明: 1. **...

    随便收集的工具类.rar

    这些工具类通常包含了各种实用方法,可以简化编程工作,提高效率。"随便收集的工具类.rar"这个压缩包可能包含了一系列不同功能的工具类,用于处理各种常见的编程任务。虽然标题和描述较为简洁,但我们可以通过标签...

    28个java常用的工具类

    这里我们探讨的“28个Java常用的工具类”集合,涵盖了字符串处理、日期时间操作、数学计算、集合操作等多个方面的实用工具。下面我们将详细分析这些工具类及其常用方法。 1. **字符串工具类**:例如`StringUtils`,...

    java utils 工具类

    在Java中,`StringUtils`是Apache Commons Lang库中的一个工具类,提供了大量实用的方法,如检查字符串是否为空、替换子串、分割字符串等。例如,`isEmpty()`方法用于判断字符串是否为空或null,避免了空指针异常。...

    最全的 Java常用工具类.zip

    Apache Commons Lang提供了一系列实用工具类,涵盖了字符串处理、数组操作、数学运算等,如`StringUtils`和`ArrayUtils`。Guava是Google的一个核心库,提供了很多高级数据结构和并发工具类,如`ImmutableList`、`...

    我自己日常使用的工具类

    标题中的“我自己日常使用的工具类”表明这是一些作者个人常用、自定义的代码工具集,通常包含了各种方便编程的实用方法。这些工具类可能涵盖了字符串处理、日期时间操作、集合框架扩展、IO流操作等多个方面,是提高...

    CollectionUtils:CollectionUtils 类

    Apache Commons Lang库提供了一个非常实用的工具类——`CollectionUtils`,它为Java的集合操作提供了大量的便利方法,极大地简化了开发人员的代码。本篇文章将深入探讨`CollectionUtils`类中的关键功能和用法。 ###...

    JAVA开发27种常用工具类.zip

    "JAVA开发27种常用工具类.zip"这个压缩包很可能包含了各种实用的工具类集合,每个工具类都有其特定的用途。以下是可能包含的一些工具类及其详细说明: 1. **ArrayUtils**: 提供了处理数组的各种操作,如复制、合并...

    spring boot内置工具类

    在Spring Boot框架中,内置了一些非常实用的工具类,这些工具类可以帮助开发者简化代码,提高开发效率。在本文中,我们将深入探讨其中的一些关键工具类,包括对象、数组、集合处理,文件、资源和IO流操作,以及反射...

    javaN个常用工具类

    在"javaN个常用工具类"这个压缩包中,我们可以期待看到一些实用且频繁使用的工具类集合。下面将详细解释可能包含在其中的一些常见工具类及其功能。 1. **StringUtils**: 这个类可能包含对字符串的各种操作,如检查...

    JavaWeb相关的工具类、Java资源

    在这个压缩包“m-long-fei-master”中,我们可以预见到一些与JavaWeb开发相关的实用工具类和资源。下面将详细介绍这些工具类可能涵盖的知识点以及其在实际开发中的应用。 1. **工具类(Utils)**: - **字符串处理...

    java 工具类

    在提供的压缩包"java工具类收集"中,可能包含了以上提到的一些工具类或者更多其他实用功能。通过对这些类的深入学习和使用,你可以更好地理解和掌握Java编程中的常用技巧和最佳实践。同时,参与共享和改进这些工具类...

Global site tag (gtag.js) - Google Analytics