将一个数组分割成等长的多个数组
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; }
这样就把一个数组变成了等长的多个数组放到了集合中,循环这个集合就能拿到了每个数组对应的数据。下面来看看效果怎么样:
首先来此可以整除的:
然后是不能整除的,最后一个数组的长度就和前面的不一样。可以结合各自的需求使长度能否被整除:
相关文章推荐
- 【CVTE】请使用js编写一个函数:chunk(arr,size),把一个数组arr按照指定的数组大小size分割成若干个数组块,传入的参数分别为数组
- php把一个字符串分割成字符数组(可以用参数指定数组每个元素字符的长度)
- 编程之美 2.18数组分割 将一个长度为2N的数组分割成2个长度为N的数组,且两数组的和的差的绝对值最小,即和最接近 动态规划?????????????????????????????????????
- 字符串---分割成数组(str_split ),算出一个字符串中出现最多的字符, 学校中最多的姓名
- C++ string字符串分割成一个数组
- java传入一个字符串 将它分割成大写字符为首的字符串数组
- 一个字符串分割成字符串数组
- 根据分隔符将一个长字符串分割保存到动态数组中
- 把一个数组按照指定的数组大小分割成若干个数组块
- 根据分隔符将一个长字符串分割保存到动态数组中
- Javascript 将数组按要求分割,并返回一个新的数组
- 看面试题看到一个按行读取文件,写了个按行读取将读取到的文件按","分割,将分割的数组封装为一个类,也就是可以写到数据库了
- LeetCode 454. 4Sum II--在四个等长的数组中,找到有多少个四元组的数值之和为0(每个数组中各占一个元素)
- 算法题 -- 输入一个Long数组,按要求输出一个等长的Long数组
- 把一个数组分成三份,两个分割点不算进求和中,使得每份的和要相同
- 小算法 - 将一个字符串分割成等长的几段
- 黑马程序员之C#编程基础学习笔记:将一个字符串数组输出为|分割的形式,比如“梅西|卡卡|郑大世"
- 平均分割一个数组
- c# 字节级别分割为等长字符串数组,分割中英混合字符串为固定长度
- NumPy 将一个数组分割(split)成几个小数组