这里做个java集合/数组拆分多个子集合/数组的两种实现方式的笔记。
方式 一:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
/** * 拆分集合
* @param datas
* @param splitSize
* @param <T>
* @return
*/
private <T> List<List<T>> spliceArrays(List<T> datas, int splitSize) {
if (datas == null || splitSize < 1 ) {
return null ;
}
int totalSize = datas.size();
//获取要拆分子数组个数
int count = (totalSize % splitSize == 0 ) ?
(totalSize / splitSize) : (totalSize/splitSize+ 1 );
System.out.println( "split count = " +count);
List<List<T>> rows = new ArrayList();
for ( int i = 0 ;i < count;i ++) {
int index = i * splitSize;
List<T> cols = new ArrayList();
int j = 0 ;
while (j < splitSize && index < totalSize) {
cols.add(datas.get(index++));
j ++;
}
rows.add(cols);
}
return rows;
} |
方式二:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
/** * 拆分集合
* @param datas
* @param splitSize
* @param <T>
* @return
*/
private <T> List<List<T>> spliceArrays(List<T> datas, int splitSize) {
if (datas == null || splitSize < 1 ) {
return null ;
}
int totalSize = datas.size();
int count = (totalSize % splitSize == 0 ) ?
(totalSize / splitSize) : (totalSize/splitSize+ 1 );
List<List<T>> rows = new ArrayList<>();
for ( int i = 0 ; i < count;i++) {
List<T> cols = datas.subList(i * splitSize,
(i == count - 1 ) ? totalSize : splitSize * (i + 1 ));
rows.add(cols);
System.out.println(cols);
}
return rows;
}
|
本文转自xuzw13 51CTO博客,原文链接:http://blog.51cto.com/xuzhiwei/1740417,如需转载请自行联系原作者