Java中如何将一个数组分割成多个等长度的数组,最后剩下的为一个素组

  • 先看图
  • 分析数据
  • 提取公式
  • 分装代码

1.如下我们需求
最近朋友android项目中有一个需求如下:
这一个长集合[item0, item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13, item14, item15, item16, item17, item18, item19, item20]
分割成下4个元素一组的小集合,剩下的为一个集合:
[item0, item1, item2, item3]
[item4, item5, item6, item7]
[item8, item9, item10, item11]
[item12, item13, item14, item15]
[item16, item17, item18, item19]
[item20]

2.数据分析

通过如上数据我们可以分析第一个集合中:是索引index为:0-3          item0,item1,item2,item3第二个集合中:是索引index为:4-7          ...... 第三个集合中:是索引index为:8-11第四个集合中:是索引index为:12-15第五个集合中:是索引index为:16-19第六个集合中:是索引index为:20           itme20  如上我们发现0  4  8  12   16   20可知道规律:i*4为第一个索引第二个为 i*4+3我们总共遍历的次数应该是我们最后获得集合的个数所以mlist.size()/4作为遍历长度。集合有一个方法List<E> subList(int fromIndex, int toIndex)可以截取获取集合如上我们可以得出for (int j = 0; j < mList.size() /4 + 1; j++) {if ((j * 4 + 4) < mList.size()) {mEndList.add(mList.subList(j * 4, j * 4 + 4));} else if ((j * 4 + 4) > mList.size()) {mEndList.add(mList.subList(j * 4, mList.size()));} else if (mList.size() <4) {mEndList.add(mList.subList(0, mList.size()));}}```
运行结果如下:[item0, item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13, item14, item15, item16, item17, item18, item19, item20][item0, item1, item2, item3][item4, item5, item6, item7][item8, item9, item10, item11][item12, item13, item14, item15][item16, item17, item18, item19][item20]     这里需要考虑这个如果长集合是8个元素呢!上面代码运行之后如下:长数组:[item0, item1, item2, item3, item4, item5, item6, item7]//运行结果:如下两个数组[item0, item1, item2, item3][]mlist.size()/4是否能够被整除,如果是4的倍数,那么会出现空集合问题。希望自己测试看看。所以这里需要mlist.size()%4判断是否被整除。代码如下:if( mList.size()%4!=0) {for (int j = 0; j < mList.size() / 4 + 1; j++) {if ((j * 4 + 4) < mList.size()) {mEndList.add(mList.subList(j * 4, j * 4+ 4));//0-3,4-7,8-11    j=0,j+3=3   j=j*3+1} else if ((j * 4 + 4) > mList.size()) {mEndList.add(mList.subList(j * 4, mList.size()));} else if (mList.size() <4) {mEndList.add(mList.subList(0, mList.size()));}}}else if(mList.size()%4==0){for (int j = 0; j < mList.size() / 4; j++) {if ((j * 4 + 4) <= mList.size()) {mEndList.add(mList.subList(j *4, j * 4 + 4));//0-3,4-7,8-11    j=0,j+3=3   j=j*3+1} else if ((j * 4+ 4) > mList.size()) {mEndList.add(mList.subList(j *4, mList.size()));} else if (mList.size() < 4) {mEndList.add(mList.subList(0, mList.size()));}}}

最后封装代码

package com.example.ls.shoppingmall;import java.util.ArrayList;
import java.util.List;/*** Created by 路很长~ on 2018/1/10.*/public class Mtext {public static void main(String[] args){//这里的数字是买一个数组的长度getList(4);}private static void getList(int targ) {List<String> mList=new ArrayList<String>();List<List<String>>mEndList=new ArrayList<>();for (int i = 0; i<21; i++){mList.add("item"+i);}System.out.println(mList.toString());if( mList.size()%targ!=0) {for (int j = 0; j < mList.size() / targ + 1; j++) {if ((j * targ + targ) < mList.size()) {mEndList.add(mList.subList(j * targ, j * targ + targ));//0-3,4-7,8-11    j=0,j+3=3   j=j*3+1} else if ((j * targ + targ) > mList.size()) {mEndList.add(mList.subList(j * targ, mList.size()));} else if (mList.size() < targ) {mEndList.add(mList.subList(0, mList.size()));}}}else if(mList.size()%targ==0){for (int j = 0; j < mList.size() / targ; j++) {if ((j * targ + targ) <= mList.size()) {mEndList.add(mList.subList(j * targ, j * targ + targ));//0-3,4-7,8-11    j=0,j+3=3   j=j*3+1} else if ((j * targ+ targ) > mList.size()) {mEndList.add(mList.subList(j * targ, mList.size()));} else if (mList.size() < targ) {mEndList.add(mList.subList(0, mList.size()));}}}for (int i = 0; i < mEndList.size(); i++) {System.out.println(mEndList.get(i).toString()+"");}}
}运行结果:[item0, item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13, item14, item15, item16, item17, item18, item19, item20]
结果:
[item0, item1, item2, item3]
[item4, item5, item6, item7]
[item8, item9, item10, item11]
[item12, item13, item14, item15]
[item16, item17, item18, item19]
[item20]

Java中如何将一个数组分割成多个等长度的数组相关推荐

  1. string类转数组 java_将java中的 string 类型转成 数组案例

    这个要看你的具体需求了.如果是有分隔符的那种例如"a,b,c";就直接分割就行了. String string = "a,b,c"; String [] str ...

  2. 将一个日程分割成多个日程_在家庭日程中开展工作的6个技巧

    将一个日程分割成多个日程 当您开始在家工作时,您可能会注意到的第一件事是,您的日程安排几乎不受外界影响. 您可能必须参加会议(有些是通过团队聊天 ,有些则是通过视频) ,但除此之外,没有任何要求您在特 ...

  3. java传入一个字符串 将它分割成大写字符为首的字符串数组

    /*      * 传入一个字符串 将它分割成大写字符为首的字符串数组      */     private ArrayList<String> splitByUpperCase(Str ...

  4. python怎么创建列表_用Python将一个列表分割成小列表的实例讲解 Python 如何创建一个带小数的列表...

    python里有一个列表,列表里有几个小列表,小列表#冒泡排序:scoreList = [['a',98],['c',45],['b',70],['d',85],['h',85],['f',92],[ ...

  5. 如何将多个excel表格合并成一个_如何将一个视频分割成多个片段

    视频已经成为我们日常娱乐必备的工具之一,我们常用的应该就是腾讯,爱奇艺,芒果TV,优酷这些,在追剧的过程中不免会看到有趣的片段,对于女生来说,或许会把自己喜欢的爱豆的视频剪辑到一起,那今天小编先带大家 ...

  6. 在java中如何把字符串转换成时间格式?

    在java中如何把字符串转换成时间格式? 检举 | 2007-11-28 17:26 提问者:baixiao429 | 悬赏分:20 | 浏览次数:6645次 有这样一个字符串:"20070 ...

  7. Java中怎么将Long类型转换成Integer或int类型

    Java中怎么将Long类型转换成Integer或int类型?    强转.Long a=10l; int b = (int)a; 不过如果long值超出int的取值范围后再转型的话会有问题的.就是转 ...

  8. Java中如何使用“点”分割字符串呢?

    下文笔者讲述Java代码中使用点分割字符串的方法分享,如下所示: 实现思路: 使用 字符串对象.split("\\.") 使用点分割字符串的示例分享 package com.jav ...

  9. Java中普通字符串转json,老司机帮您java中如何将字符串转成json

    电脑现已成为我们工作.生活和娱乐必不可少的工具了,在使用电脑的过程中,可能会遇到java中如何将字符串转成json的问题,如果我们遇到了java中如何将字符串转成json的情况,该怎么处理怎么才能解决 ...

最新文章

  1. creo JAVA_Creo 4.0二次开发工具框架搭建
  2. python和c学习-关于本站 - cPython - 给大学生的入门教程
  3. Linux基础 —— 操作系统简介
  4. 4.1.3数据报与虚电路
  5. python中的装饰器
  6. NSMutableString可变字符串
  7. 25. PHP 文件处理
  8. 单链表以及双向链表的操作
  9. 从零基础入门Tensorflow2.0 ----一、3.1 实战深度神经网络
  10. CentOS7.2下python安装pip-8.0.2管理
  11. Paip.声明式编程以及DSL 总结
  12. 探究CRM未来趋势:纷享销客的连接型CRM到底是什么?
  13. 小提琴1234567位置图解_小提琴1234567位置图解 那就随便拉了啊反正是玩嘛~怎
  14. 衡水十四中2021高考成绩查询,心之所向,行必能至|衡水市第十四中学召开2021高考倒计时200天动...
  15. 什么是黑客?郭盛华告诉你
  16. 《经济学的思维方式》内容
  17. Android电池信息(Battery information)
  18. Introducing the Universal CRT
  19. #神仙见了会流泪之#getElementsByTagName的用法
  20. CheriABI简介

热门文章

  1. 微软必应成功预测法国队夺冠
  2. SEO挖掘核心关键词的策略技巧
  3. python电影推荐系统_推荐系统的几种形式(python版)
  4. DNA计算 与 肽展公式 推导 AOPM-A 变胸腺苷, AOPM-O尿胞变腺苷, AOPM-P尿胞变鸟苷, AOPM-M鸟腺苷的 S形螺旋纹 血氧峰 触发器分子式 严谨完整过程
  5. Daily Practice 5th:Educational Codeforces Round 120 (Rated for Div. 2)
  6. mov DWORD PTR [rbp-0xc],0xa
  7. html网页播放flac,教你如何无损录制网页上播放的声音
  8. (验证文件)validateJarFile...报错
  9. 1个免费网站教你如何追踪微信实时热点,速速收藏
  10. 网络游戏引入人工智能:游戏玩家并非真人