集合工具类 - CollectionUtil.java
集合工具类,提供数组转LIST、数组转SET、合并集合、计算笛卡儿积等方法。
源码如下:(点击下载 -
CollectionUtil.java、
ArrayUtil.java、
commons-lang-2.6.jar、
commons-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的更多相关文章
- [Google Guava] 2.3-强大的集合工具类:java.util.Collections中未包含的集合工具
原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.G ...
- 集合-强大的集合工具类:java.util.Collections中未包含的集合工具
任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.Guava沿着这些路线提供了更多的工具方法:适用于所有集合的静态方法.这是Guava最流行和成熟 ...
- [Google Guava] 强大的集合工具类:java.util.Collections中未包含的集合工具
转载的,有问题请联系我 原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collecti ...
- Collections集合工具类常用的方法
java.utils.Collections //是集合工具类,用来对集合进行操作.部分方法如下: public static <T> boolean addAll(Collection& ...
- java之集合工具类Collections
Collections类简介 java.utils.Collections 是集合工具类,用来对集合进行操作.此类完全由在 collection 上进行操作或返回 collection 的静态方法组成 ...
- java第十九天,Collections集合工具类的使用
Collections Java中集合都实现了Collection接口,那么针对集合一些特定的功能,有没有一个接口或类能够统一的集成一些集合必要的功能呢?当然能.它就是--Collections集合工 ...
- Java自学第6期——Collection、Map、迭代器、泛型、可变参数、集合工具类、集合数据结构、Debug
集合:集合是java中提供的一种容器,可以用来存储多个数据. 集合和数组既然都是容器,它们有啥区别呢? 数组的长度是固定的.集合的长度是可变的. 数组中存储的是同一类型的元素,可以存储基本数据类型值. ...
- Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类
Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...
- 实用的 集合工具类 和 String工具类
集合工具类:CollectionUtil method: 1.isNotEmpty() 不为空 2.isEmpty() 为空 举例:map集合 Map<String,String ...
随机推荐
- PERCONA-TOOLKIT 工具的安装与使用2
[root@server-mysql ~]# cd /usr/bin [root@server-mysql bin]# ls pt* pt-align pt-duplicate-key-checker ...
- TimePicker 和TimePickerDiag
先建立以个xml,然后拖拽TimerPicker; TimePicker和TimePickerDiag TimerPicker : 先建立xml文件,然后拖拽TimePicker然后在MainActi ...
- kickstart安装
1.生成ks.cfg 文件 安装Kickstart # yum install system-config-kickstart 8.2 在桌面环境下配置Kickstart 启动X Windows 环境 ...
- samba服务器与远程登录ssh
作者:相思羽 出处:http://www.cnblogs.com/xiang-siyu 欢迎转载,也请保留这段声明.谢谢! deepin安装与配置samba服务器 安装 apt-get insta ...
- apache性能配置优化
最近在进行apache性能优化设置.在修改apache配置文件之前需要备份原有的配置文件夹conf,这是网站架设的好习惯.以下的apache配置调优均是在red had的环境下进行的. httpd相关 ...
- Verilog HDL常用的行为仿真描述语句
一.循环语句 1.forever语句 forever语句必须写在initial模块中,主要用于产生周期性波形. 2.利用for.while循环语句完成遍历 for.while语句常用于完成遍历测试.当 ...
- Magento的布局(Layout),块(Block)和模板(Template)
public function indexAction() { //remove our previous echo //echo 'Hello Index!'; $this->loadLayo ...
- overflow:hiddden与绝对定位的应用场景的事例
做一个点击查看显示详细信息的效果. 说一下问题描述,最外面的父元素overflow-parent设置了overflow:hidden, 然后子元素overflow-child没有设置overflow, ...
- 腾讯海量数据处理平台TDW
TDW是腾讯海量数据处理平台中最核心的模块,它有以下几个作用: 提供海量的离线计算和存储服务.TDW是腾讯内部规模最大的离线数据处理平台,公司内大多数业务的产品报表.运营分析.数据挖掘等的存储和计算都 ...
- 20160328 javaweb Cookie 小练习
利用cookie实现历史记录浏览: 由于是简单演示,所以直接用javabean 取代数据库了 数据存储类: package com.dzq.dao; import java.util.*; impor ...