java collection join_集合工具类 - CollectionUtil.java

1 importjava.util.ArrayList;2 importjava.util.Arrays;3 importjava.util.Collection;4 importjava.util.LinkedHashSet;5 importjava.util.List;6 importjava.util.Set;7 importorg.apache.commons.collections4.CollectionUtils;8 importorg.apache.commons.lang.ArrayUtils;9

10 /**

11 * 集合工具类12 *13 */

14 public classCollectionUtil {15

16 private static transient final String DEFAULT_SPLIT_STR = ",";17

18 /**

19 * 数组转列表20 *21 *@paramarr22 * an array of T objects.23 *@param24 * a T object.25 *@returna {@linkjava.util.List} object.26 */

27 public static final Listarray2List(T[] arr) {28 if(ArrayUtils.isEmpty(arr)) {29 return null;30 }31 returnArrays.asList(arr);32 }33

34 /**

35 * 数组转SET36 *37 *@paramarr38 * an array of T objects.39 *@param40 * a T object.41 *@returna {@linkjava.util.Set} object.42 */

43 public static final Setarray2Set(T[] arr) {44 if(ArrayUtils.isEmpty(arr)) {45 return null;46 }47 return new LinkedHashSet(Arrays.asList(arr));48 }49

50 /**

51 * 合并集合52 *53 *@paramcollections54 * a {@linkjava.util.Collection} object.55 *@param56 * a T object.57 *@returna {@linkjava.util.List} object.58 */

59 @SuppressWarnings("unchecked")60 public static final Listcollections2List(61 Collection... collections) {62 if(ArrayUtils.isEmpty(collections)) {63 return null;64 }65

66 final List li = new ArrayList();67 for (Collectionfoo : collections) {68 if(CollectionUtils.isNotEmpty(foo)) {69 li.addAll(foo);70 }71 }72 returnli;73 }74

75 /**

76 * 合并集合77 *78 *@paramcollections79 * a {@linkjava.util.Collection} object.80 *@param81 * a T object.82 *@returna {@linkjava.util.Set} object.83 */

84 @SuppressWarnings("unchecked")85 public static final Set collections2Set(Collection... collections) {86 if(ArrayUtils.isEmpty(collections)) {87 return null;88 }89 final Set set = new LinkedHashSet();90 for (Collectionfoo : collections) {91 if(CollectionUtils.isNotEmpty(foo)) {92 set.addAll(foo);93 }94 }95 returnset;96 }97

98 /**

99 * 拼接集合字符串100 *101 *@paramcollection102 * a {@linkjava.util.Collection} object.103 *@paramjoinStr104 * a {@linkjava.lang.String} object.105 *@returna {@linkjava.lang.String} object.106 */

107 @SuppressWarnings({ "unchecked", "rawtypes"})108 public static final String join(final Collection collection, finalString joinStr) {109 if(CollectionUtils.isEmpty(collection)) {110 return "";111 }112 if (joinStr == null) {113 throw new IllegalArgumentException("join string is null.");114 }115

116 Object[] arr = ArrayUtil.toArray(collection, Object.class);117 returnArrayUtil.join(arr, joinStr);118 }119

120 /**

121 * 拼接集合字符串122 *123 *@paramcollection124 * a {@linkjava.util.Collection} object.125 *@returna {@linkjava.lang.String} object.126 */

127 @SuppressWarnings("rawtypes")128 public static final String join(finalCollection collection) {129 returnjoin(collection, DEFAULT_SPLIT_STR);130 }131

132 /**

133 * 计算笛卡儿积134 *135 *@paramcrossArgs136 * a {@linkjava.util.List} object.137 *@param138 * a T object.139 *@returna {@linkjava.util.List} object.140 */

141 public static List> decartes(List>crossArgs) {142

143 //计算出笛卡尔积行数

144 int rows = crossArgs.size() > 0 ? 1 : 0;145

146 for (Listdata : crossArgs) {147 rows *=data.size();148 }149

150 //笛卡尔积索引记录

151 int[] record = new int[crossArgs.size()];152

153 List> results = new ArrayList>();154

155 //产生笛卡尔积

156 for (int i = 0; i < rows; i++) {157 List row = new ArrayList();158

159 //生成笛卡尔积的每组数据

160 for (int index = 0; index < record.length; index++) {161 row.add(crossArgs.get(index).get(record[index]));162 }163

164 results.add(row);165 crossRecord(crossArgs, record, crossArgs.size() - 1);166 }167

168 returnresults;169 }170

171 /**

172 *@paramsourceArgs173 *@paramrecord174 *@paramlevel175 */

176 private static void crossRecord(List> sourceArgs, int[] record, intlevel) {177 record[level] = record[level] + 1;178

179 if (record[level] >= sourceArgs.get(level).size() && level > 0) {180 record[level] = 0;181 crossRecord(sourceArgs, record, level - 1);182 }183 }184

185 /**

186 * 从list中取得某段数据187 *188 *@param189 *@paramdatas190 *@parampage191 *@paramPAGESIZE192 *@return

193 */

194 public static List getLimit(List datas, int begin, intend) {195 List objects = new ArrayList();196 if (datas.size() <=begin) {197 returnobjects;198 }199 int temp = (datas.size() > end) ?end : datas.size();200 for (int i = begin; i < temp; i++) {201 objects.add(datas.get(i));202 }203 returnobjects;204 }205

206 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值