这里做个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,如需转载请自行联系原作者