`

JAVA基础篇【工具类】CollectionUtil 集合操作工具类 TG【20130318整理】

阅读更多

集合操作工具类

import java.util.Collection;  
import java.util.LinkedList;  
import java.util.List;  
import java.util.Map;  
  
/**  
 * 集合(List,Map,Set)辅助类。  
 * @author Elfy  
 * @date 2013年02月25日  
 */  
public class CollectionUtil {  
      
    /**  
     * 功能:从List中随机取出一个元素。  
     * @author Elfy  
     * @date 2013年02月25日 
     * @param objs 源List  
     * @return T List的一个元素  
     */  
    public static <T> T randomOne(List<T> list){  
        if(isEmpty(list)){  
            return null;  
        }  
        return list.get(MathUtil.randomNumber(0, list.size()));  
    }  
      
    /**  
     * 功能:从数组中随机取出一个元素。  
     * @author Elfy  
     * @date 2013年02月25日  
     * @param objs 源数组  
     * @return T 数组的一个元素  
     */  
    public static <T> T randomOne(T[] objs){  
        if(isEmpty(objs)){  
            return null;  
        }  
        return objs[MathUtil.randomNumber(0, objs.length)];  
    }  
      
    /**  
     * 功能:数组中是否存在这个元素。  
     * @author Elfy  
     * @date 2013年02月25日   
     * @param objArr 数组  
     * @param compare 元素  
     * @return 存在返回true,否则返回false。  
     */  
    public static <T> boolean arrayContain(T[] objArr,T compare){  
        if(isEmpty(objArr)){  
            return false;  
        }  
        for(T obj : objArr){  
            if(obj.equals(compare)){  
                return true;  
            }  
        }  
        return false;  
    }  
      
  
    /**  
     * 功能:向list中添加数组。  
     * @author Elfy  
     * @date 2013年02月25日  
     * @param list List  
     * @param array 数组  
     */  
    public static <T> void addArrayToList(List<T> list, T[] array) {  
        if (isEmpty(list)) {  
            return;  
        }  
        for (T t : array) {  
            list.add(t);  
        }  
    }  
      
    /**  
     * 功能:将数组进行反转,倒置。  
     * @author Elfy  
     * @date 2013年02月25日  
     * @param objs 源数组  
     * @return T[] 反转后的数组  
     */  
    public static <T> T[] reverseArray(T[] objs){  
        if(isEmpty(objs)){  
            return null;  
        }  
        T[] res=(T[])java.lang.reflect.Array.newInstance(objs[0].getClass(), objs.length);  
        //新序号  
        int k=0;  
        for(int i=objs.length-1 ; i>=0 ; i--){  
            res[k++]=objs[i];  
        }  
        return res;  
    }  
      
    /**  
     * 功能:将数组转为list。  
     * @author Elfy  
     * @date 2013年02月25日  
     * @param objs 源数组  
     * @return List  
     */  
    public static <T> List<T> arrayToList(T[] objs){  
        if(isEmpty(objs)){  
            return null;  
        }  
        List<T> list=new LinkedList<T>();  
        for(T obj : objs){  
            list.add(obj);  
        }  
        return list;  
    }  
      
    /**  
     * 功能:将list转为数组。  
     * @author Elfy  
     * @date 2013年02月25日 
     * @param list 源list  
     * @return T[]  
     */  
    public static <T> T[] listToArray(List<T> list){  
        if(isEmpty(list)){  
            return null;  
        }  
        T[] objs=(T[])java.lang.reflect.Array.newInstance(list.get(0).getClass(), list.size());  
        int i=0; //数组下标。  
        for(T obj : list){  
            objs[i++]=obj;  
        }  
        return objs;  
    }  
      
    /**  
     * 将一个字符串数组的内容全部添加到另外一个数组中,并返回一个新数组。  
     * @param array1 第一个数组  
     * @param array2 第二个数组  
     * @return T[] 拼接后的新数组  
     */  
    public static <T> T[] concatenateArrays(T[] array1, T[] array2) {  
        if (isEmpty(array1)) {  
            return array2;  
        }  
        if (isEmpty(array2)) {  
            return array1;  
        }  
        T[] resArray=(T[])java.lang.reflect.Array.newInstance(array1[0].getClass(), array1.length+array2.length);  
        System.arraycopy(array1, 0, resArray, 0, array1.length);  
        System.arraycopy(array2, 0, resArray, array1.length, array2.length);  
        return resArray;  
    }  
      
    /**  
     * 将一个object添加到一个数组中,并返回一个新数组。  
     * @param array被添加到的数组  
     * @param object 被添加的object  
     * @return T[] 返回的新数组  
     */  
    public static <T> T[] addObjectToArray(T[] array, T obj) {  
        //结果数组  
        T[] resArray=null;  
        if (isEmpty(array)) {  
            resArray=(T[])java.lang.reflect.Array.newInstance(obj.getClass(), 1);  
            resArray[0]=obj;  
            return resArray;  
        }  
        //原数组不为空时。  
        resArray=(T[])java.lang.reflect.Array.newInstance(array[0].getClass(), array.length+1);  
        System.arraycopy(array, 0, resArray, 0, array.length);  
        resArray[array.length] = obj;  
        return resArray;  
    }  
      
    /**  
     * 功能:判断数组是不是空。(null或者length==0)  
     * @author Elfy  
     * @date 2013年02月25日  
     * @param array 数组  
     * @return boolean 空返回true,否则返回false。  
     */  
    public static <T> boolean isEmpty(T[] array) {  
        return (array == null || array.length==0);  
    }  
      
      
    /**  
     * 功能:集合是否为空。如果传入的值为null或者集合不包含元素都认为为空。  
     * @author Elfy  
     * @date 2013年02月25日  
     * @param collection 集合  
     * @return boolean 为空返回true,否则返回false。  
     */  
    public static boolean isEmpty(Collection collection) {  
        return (collection == null || collection.isEmpty());  
    }  
  
    /**  
     * 功能:Map是否为空。如果传入的值为null或者集合不包含元素都认为为空。  
     * @author Elfy  
     * @date 2013年02月25日  
     * @param map Map  
     * @return boolean 为空返回true,否则返回false。  
     */  
    public static boolean isEmpty(Map map) {  
        return (map == null || map.isEmpty());  
    }  
      
}  
分享到:
评论

相关推荐

    JAVA对象以及数据的工具类

    在Java编程语言中,工具类(Utils)是包含各种实用方法的类,这些方法通常用于执行常见的任务,如类型转换、字符串操作、集合处理等。它们使得代码更加简洁且易于维护,因为它们提供了通用功能的封装,避免了重复...

    完整的java文件读写工具类

    本篇将详细讲解标题为"完整的java文件读写工具类"所涉及的核心知识点,以及如何实现描述中提到的文件与目录管理功能。 1. **Java IO基础**: Java IO是Java标准库中的核心部分,提供了处理输入/输出流的类。在`...

    Java实现的Https请求工具类

    本篇文章将深入探讨如何在Java中实现一个用于处理HTTPS请求的工具类。 首先,要实现HTTPS请求,我们需要导入Java的`java.net`和`javax.net.ssl`包,这两个包提供了处理网络连接和SSL/TLS安全协议的类。以下是一些...

    JAVA操作mysql工具类

    这篇博客的作者提供了一个自封装的JAVA操作MySQL数据库的工具类,这有助于简化数据库的交互过程,提高代码的可读性和可维护性。这里我们将深入探讨这个工具类可能涉及的关键知识点。 1. **JDBC(Java Database ...

    java 调用 google 翻译工具类

    本篇文章将详细介绍如何在Java中使用Google翻译API,并提供一个可直接运行的工具类示例。 首先,我们需要了解Google翻译API的基本概念。Google Translate API是Google Cloud平台的一部分,它提供了RESTful接口,...

    Java 单例模式 工具类

    本篇文章将深入探讨如何在Java中实现单例模式,以及如何创建一个工具类来封装单例的创建。 首先,让我们了解单例模式的几种常见实现方式: 1. 饿汉式(静态常量): 这是最简单的单例实现,它在类加载时就完成了...

    Https请求工具类,Java实现http请求,https请求

    本篇文章将详细介绍如何使用Java语言实现Http和Https请求的工具类,包括如何建立Https连接、如何实现Post请求、如何处理SSL验证等内容。 在Java中,使用HttpURLConnection类可以实现Http和Https请求,但是对于...

    Java json工具类,jackson工具类,ObjectMapper工具类

    本篇文章将深入探讨Jackson库中的核心工具类`ObjectMapper`,以及如何使用`JacksonUtils`来简化JSON操作。 `ObjectMapper`是Jackson库的核心组件,它负责将Java对象转换为JSON字符串,反之亦然。`ObjectMapper`提供...

    JavaDBF工具类

    这篇博文"JavaDBF工具类"的作者分享了一个实用的Java库,用于操作DBF文件。通过这个工具类,开发者可以轻松地在Java应用程序中读取DBF文件中的记录,添加、修改或删除记录,并将更改写回文件。这对于需要处理这种...

    java utils 工具类

    在Java编程中,工具类(Utils Class)是一种封装了常用功能的方法集合,它们通常被设计为不可实例化的静态类,方便开发者在不创建对象的情况下直接调用方法。本篇文章将聚焦于“Java Utils 工具类”,特别是通过分析...

    java工具类java工具类java工具类

    Java工具类是程序员在开发过程中经常使用的一类代码集合,它们提供了一系列静态方法,用于执行通用的任务,如字符串处理、日期时间操作、IO流管理等。这些工具类大大提高了开发效率,减少了代码重复,使得代码更加...

    java操作日期时间工具类

    本篇将重点介绍Java操作日期时间的工具类,特别是通过`DateUtil.java`这个自定义工具类的实现方式。 `java.util.Date`是Java早期用来表示日期和时间的基础类,它包含了日期和时间的信息,但没有区分日期和时间。...

    Java基础篇:Java集合.pdf

    该文档主要详细总结了Java集合的相关知识,包括Collection和Map接口、Collection接口的子接口List和Set接口以及具体的实现类、存储原理等;Map接口的子接口HashMap、LinkedHashMap、TreeMap、Properties等

    Java IO 工具类大全

    本篇文章将全面解析Java IO工具类,帮助你理解并掌握其在实际开发中的应用。 一、Java IO基础 Java IO体系主要由流(Stream)组成,分为字节流和字符流两大类,分别处理字节数据和字符数据。字节流包括InputStream...

    MapUtils工具类,轻松转换map数据与实体类

    本篇文章将深入探讨`MapUtils`工具类的使用及其在Java开发中的重要性。 首先,让我们了解一下实体类。在Java中,实体类通常用于表示数据库中的表或者业务逻辑中的对象。例如,`User.java`文件可能包含一个`User`类...

    Java日期工具类,Java时间工具类,Java时间格式化

    本篇将围绕Java中的日期工具类和时间工具类展开讨论,同时会涉及到日期时间的格式化。 首先,Java 8之前,我们主要依赖`java.util.Date`和`java.text.SimpleDateFormat`这两个类来处理日期和时间。`Date`类用于表示...

    Java常用工具类

    本篇将详细介绍Java开发中的常用工具类,涵盖以下几个方面: 1. **集合操作:** `java.util.Collections` 类提供了对集合对象进行各种操作的静态方法,如排序、填充、反转等。例如,`Collections.sort()` 可以对...

    java,redis,jedis操作工具类,自己写的简易 demo

    除了基础操作外,Jedis还支持发布订阅、事务、lua脚本等功能,可以根据需求进一步扩展工具类。 综上所述,Java通过Jedis连接Redis并创建工具类,能有效地进行键值存储操作,提高开发效率。正确配置连接池、处理...

    java的xml和json相互转换工具类,亲测直接用

    本篇文章将详细介绍Java中如何实现XML和JSON的相互转换,并提供一个名为`XmlToJson.java`的工具类作为参考。 首先,XML是一种结构化的数据表示方式,它以树形结构存储数据,易于人类阅读和编写,同时也易于机器解析...

    aspose-17.8 Java 生成 pdf 工具类

    在本篇内容中,我们将聚焦于"Aspose-17.8 Java 生成PDF工具类",了解如何利用Aspose库在Java环境中创建PDF文件。 首先,`aspose.pdf-17.8.jar`是Aspose.Pdf组件的核心库,它允许开发者在Java应用中创建、操作和转换...

Global site tag (gtag.js) - Google Analytics