集合工具类,提供数组转LIST、数组转SET、合并集合、计算笛卡儿积等方法。

源码如下:(点击下载 -  CollectionUtil.javaArrayUtil.javacommons-lang-2.6.jarcommons-collections4-4.0.jar)

 import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ArrayUtils; /**
* 集合工具类
*
*/
public class CollectionUtil { private static transient final String DEFAULT_SPLIT_STR = ","; /**
* 数组转列表
*
* @param arr
* an array of T objects.
* @param <T>
* a T object.
* @return a {@link java.util.List} object.
*/
public static final <T> List<T> array2List(T[] arr) {
if (ArrayUtils.isEmpty(arr)) {
return null;
}
return Arrays.asList(arr);
} /**
* 数组转SET
*
* @param arr
* an array of T objects.
* @param <T>
* a T object.
* @return a {@link java.util.Set} object.
*/
public static final <T> Set<T> array2Set(T[] arr) {
if (ArrayUtils.isEmpty(arr)) {
return null;
}
return new LinkedHashSet<T>(Arrays.asList(arr));
} /**
* 合并集合
*
* @param collections
* a {@link java.util.Collection} object.
* @param <T>
* a T object.
* @return a {@link java.util.List} object.
*/
@SuppressWarnings("unchecked")
public static final <T> List<T> collections2List(
Collection<T>... collections) {
if (ArrayUtils.isEmpty(collections)) {
return null;
} final List<T> li = new ArrayList<T>();
for (Collection<T> foo : collections) {
if (CollectionUtils.isNotEmpty(foo)) {
li.addAll(foo);
}
}
return li;
} /**
* 合并集合
*
* @param collections
* a {@link java.util.Collection} object.
* @param <T>
* a T object.
* @return a {@link java.util.Set} object.
*/
@SuppressWarnings("unchecked")
public static final <T> Set<T> collections2Set(Collection<T>... collections) {
if (ArrayUtils.isEmpty(collections)) {
return null;
}
final Set<T> set = new LinkedHashSet<T>();
for (Collection<T> foo : collections) {
if (CollectionUtils.isNotEmpty(foo)) {
set.addAll(foo);
}
}
return set;
} /**
* 拼接集合字符串
*
* @param collection
* a {@link java.util.Collection} object.
* @param joinStr
* a {@link java.lang.String} object.
* @return a {@link java.lang.String} object.
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public static final String join(final Collection collection, final String joinStr) {
if (CollectionUtils.isEmpty(collection)) {
return "";
}
if (joinStr == null) {
throw new IllegalArgumentException("join string is null.");
} Object[] arr = ArrayUtil.toArray(collection, Object.class);
return ArrayUtil.join(arr, joinStr);
} /**
* 拼接集合字符串
*
* @param collection
* a {@link java.util.Collection} object.
* @return a {@link java.lang.String} object.
*/
@SuppressWarnings("rawtypes")
public static final String join(final Collection collection) {
return join(collection, DEFAULT_SPLIT_STR);
} /**
* 计算笛卡儿积
*
* @param crossArgs
* a {@link java.util.List} object.
* @param <T>
* a T object.
* @return a {@link java.util.List} object.
*/
public static <T> List<List<T>> decartes(List<List<T>> crossArgs) { // 计算出笛卡尔积行数
int rows = crossArgs.size() > 0 ? 1 : 0; for (List<T> data : crossArgs) {
rows *= data.size();
} // 笛卡尔积索引记录
int[] record = new int[crossArgs.size()]; List<List<T>> results = new ArrayList<List<T>>(); // 产生笛卡尔积
for (int i = 0; i < rows; i++) {
List<T> row = new ArrayList<T>(); // 生成笛卡尔积的每组数据
for (int index = 0; index < record.length; index++) {
row.add(crossArgs.get(index).get(record[index]));
} results.add(row);
crossRecord(crossArgs, record, crossArgs.size() - 1);
} return results;
} /**
* @param sourceArgs
* @param record
* @param level
*/
private static <T> void crossRecord(List<List<T>> sourceArgs, int[] record, int level) {
record[level] = record[level] + 1; if (record[level] >= sourceArgs.get(level).size() && level > 0) {
record[level] = 0;
crossRecord(sourceArgs, record, level - 1);
}
} /**
* 从list中取得某段数据
*
* @param <T>
* @param datas
* @param page
* @param PAGESIZE
* @return
*/
public static <T> List<T> getLimit(List<T> datas, int begin, int end) {
List<T> objects = new ArrayList<T>();
if (datas.size() <= begin) {
return objects;
}
int temp = (datas.size() > end) ? end : datas.size();
for (int i = begin; i < temp; i++) {
objects.add(datas.get(i));
}
return objects;
} }

集合工具类 - CollectionUtil.java的更多相关文章

  1. [Google Guava] 2.3-强大的集合工具类:java.util.Collections中未包含的集合工具

    原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.G ...

  2. 集合-强大的集合工具类:java.util.Collections中未包含的集合工具

    任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.Guava沿着这些路线提供了更多的工具方法:适用于所有集合的静态方法.这是Guava最流行和成熟 ...

  3. [Google Guava] 强大的集合工具类:java.util.Collections中未包含的集合工具

    转载的,有问题请联系我 原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collecti ...

  4. Collections集合工具类常用的方法

    java.utils.Collections //是集合工具类,用来对集合进行操作.部分方法如下: public static <T> boolean addAll(Collection& ...

  5. java之集合工具类Collections

    Collections类简介 java.utils.Collections 是集合工具类,用来对集合进行操作.此类完全由在 collection 上进行操作或返回 collection 的静态方法组成 ...

  6. java第十九天,Collections集合工具类的使用

    Collections Java中集合都实现了Collection接口,那么针对集合一些特定的功能,有没有一个接口或类能够统一的集成一些集合必要的功能呢?当然能.它就是--Collections集合工 ...

  7. Java自学第6期——Collection、Map、迭代器、泛型、可变参数、集合工具类、集合数据结构、Debug

    集合:集合是java中提供的一种容器,可以用来存储多个数据. 集合和数组既然都是容器,它们有啥区别呢? 数组的长度是固定的.集合的长度是可变的. 数组中存储的是同一类型的元素,可以存储基本数据类型值. ...

  8. Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类

    Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...

  9. 实用的 集合工具类 和 String工具类

    集合工具类:CollectionUtil method: 1.isNotEmpty() 不为空 2.isEmpty() 为空 举例:map集合         Map<String,String ...

随机推荐

  1. PERCONA-TOOLKIT 工具的安装与使用2

    [root@server-mysql ~]# cd /usr/bin [root@server-mysql bin]# ls pt* pt-align pt-duplicate-key-checker ...

  2. TimePicker 和TimePickerDiag

    先建立以个xml,然后拖拽TimerPicker; TimePicker和TimePickerDiag TimerPicker : 先建立xml文件,然后拖拽TimePicker然后在MainActi ...

  3. kickstart安装

    1.生成ks.cfg 文件 安装Kickstart # yum install system-config-kickstart 8.2 在桌面环境下配置Kickstart 启动X Windows 环境 ...

  4. samba服务器与远程登录ssh

    作者:相思羽  出处:http://www.cnblogs.com/xiang-siyu 欢迎转载,也请保留这段声明.谢谢! deepin安装与配置samba服务器 安装  apt-get insta ...

  5. apache性能配置优化

    最近在进行apache性能优化设置.在修改apache配置文件之前需要备份原有的配置文件夹conf,这是网站架设的好习惯.以下的apache配置调优均是在red had的环境下进行的. httpd相关 ...

  6. Verilog HDL常用的行为仿真描述语句

    一.循环语句 1.forever语句 forever语句必须写在initial模块中,主要用于产生周期性波形. 2.利用for.while循环语句完成遍历 for.while语句常用于完成遍历测试.当 ...

  7. Magento的布局(Layout),块(Block)和模板(Template)

    public function indexAction() { //remove our previous echo //echo 'Hello Index!'; $this->loadLayo ...

  8. overflow:hiddden与绝对定位的应用场景的事例

    做一个点击查看显示详细信息的效果. 说一下问题描述,最外面的父元素overflow-parent设置了overflow:hidden, 然后子元素overflow-child没有设置overflow, ...

  9. 腾讯海量数据处理平台TDW

    TDW是腾讯海量数据处理平台中最核心的模块,它有以下几个作用: 提供海量的离线计算和存储服务.TDW是腾讯内部规模最大的离线数据处理平台,公司内大多数业务的产品报表.运营分析.数据挖掘等的存储和计算都 ...

  10. 20160328 javaweb Cookie 小练习

    利用cookie实现历史记录浏览: 由于是简单演示,所以直接用javabean 取代数据库了 数据存储类: package com.dzq.dao; import java.util.*; impor ...