您的位置:首页 > 其它

将一个数组分割成等长的多个数组

2019-06-28 14:52 176 查看

  有时候我们为了方便可能会把一些数据采用字符串的形式拼接成一个,传到后台时进行分割处理,处理完直接拿来用即可。这是指只用一条数据的情况下,有时候又可能是多条数据,就比如要保存某个订单的明细数据,这时候我们需要在前台传来的数据中分割出每条明细数据,然后去保存每条明细数据。下面分享一个分割这种存在多条数据的方法。
  下面是封装好的用来按长度分割数组的方法,需要传两个参数,分别是需要分割的数组以及分割的长度。

public static List<List<String>> ArraySplitByLength(String[] StrArr,
int length) {
// 先声明一个字符串集合
List<String> list = new ArrayList<String>();
// 再声明一个类似二维数组的集合
List<List<String>> okdList = new ArrayList<List<String>>();
// 循环数组把每个数组元素添加到字符串集合中,后面操作的都是这个字符串集合
for (int i = 0; i < StrArr.length; i++) {
list.add(StrArr[i]);
}
// 判断集合长度能否被要分割的长度整除
if (list.size() % length != 0) {
// 根据要分割的长度循环拿到每个数组添加到类似二维数组的集合中
// 因为不能被整除,说明会有多余的数据不能拿到,所以循环次数+1
for (int j = 0; j < list.size() / length + 1; j++) {
// 下面则是根据每次截取的位置以及要截取的长度,判断怎么个截法了
if ((j * length + length) < list.size()) {
okdList.add(list.subList(j * length, j * length + length));
} else if ((j * length + length) > list.size()) {
okdList.add(list.subList(j * length, list.size()));
} else if (list.size() < length) {
okdList.add(list.subList(0, list.size()));
}
}
} else {
// 能被整除直接循环,循环次数就是集合长度/要分割的长度,得到的就是分割后数组的个数
for (int i = 0; i < list.size() / length; i++) {
// 调用集合的subList(int,int)方法截取到每个数组并添加到类似二维数组的集合中
okdList.add(list.subList(i * length, i * length + length));
}
}
return okdList;
}

  这样就把一个数组变成了等长的多个数组放到了集合中,循环这个集合就能拿到了每个数组对应的数据。下面来看看效果怎么样:
首先来此可以整除的:

然后是不能整除的,最后一个数组的长度就和前面的不一样。可以结合各自的需求使长度能否被整除:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐