集合工具类 - 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 ...
随机推荐
- Enable SPI 1.0 and 1.1 with device tre overlays on BeagleBone
For most people the above image means absolutely nothing, but for that one guy that has been searchi ...
- Webstorm 不识别es6 import React from ‘react’——webstorm不支持jsx语法怎么办
2016-10-31更新 webstorm不支持es6语法怎么办? webstorm不支持jsx语法怎么办? 参考:webstorm不支持jsx语法怎么办 I spent ages trying to ...
- 破解SQLYog30天试用方法
开始-运行-regedit ,进入注册表,在 \HEYK_CURRENT_USER\Software\{FCE28CE8-D8CE-4637-9BC7-93E4C0D407FA}下的InD保存着SQL ...
- 20151211Jquery Ajax进阶学习笔记
四.JSON 和 JSONP 如果在同一个域下,$.ajax()方法只要设置 dataType 属性即可加载 JSON 文件.而在非 同域下,可以使用 JSONP,但也是有条件的. //$.ajax( ...
- 在 APK 中找不到对应的 securityguard***.so 文件或者 so 文件载入出错
1.解压查看你的apk是不是将so打进去了,如果没有打进入查看自己的jnilibs是否指定 2.查看手机是否是64的手机.因为百川的安全包没有64的支持,所以目前是以兼容包的形式给的包.如果第三方有6 ...
- html调用applet
1.相同目录下 <applet code="*.class" width=250 height=50> </applet> 指定applet类名称,appl ...
- ASP.NET MVC5总结(三)登陆中常用技术解析之session与cookie
1.session机制 session机制是在服务器端保持状态的方案,在做系统登陆时,我们往往会用到session来存储一些用户登录的重要信息,而这些信息是不能存在cookie中的. 当访问量增多时, ...
- Angularjs总结(八)$ cookie和$rootscope
AngularJS 提供了很好的 $cookie 和 $cookieStore API 用来处理 cookies .这两个服务都能够很好的发挥HTML5 cookies,当HTML5 API可用时浏览 ...
- 《程序员的思维修炼》摘抄start:2014年9月27日19:27:07
程序员的思维修炼:摘抄:考虑到社会中各个相关团体的复杂交互影响和社会的持续变化,在我看来当前最重要的两项技能就是: ▪沟通能力: ▪学习和思考能力.软件行业正在逐步提高沟通能力.特别是敏捷方法(见注解 ...
- Microsoft Windows Installer 工具 Msiexec.exe 的命令行选项
摘自:http://support.microsoft.com/kb/314881/zh-cn 概要 本文列出了 Windows Installer 工具 Msiexec.exe 的命令行选项.Msi ...