如何在Java字符串数组中每跳过3个元素后获取后续3个元素?
解决方案:按间隔提取数组元素
要实现你说的「每3个元素为间隔,跳过前3组、取下一组」的需求,我们可以调整循环的起始索引和步长,不用逐个遍历所有元素,这样效率更高也更直观。
核心思路
- 起始索引从3开始(直接跳过0、1、2这三个元素)
- 每次循环往后走6步(因为要完成「跳过3个+取3个」的一轮操作,下一组起始位置就是当前起始+6)
- 每次循环内,提取当前索引、索引+1、索引+2的元素,同时做越界检查避免报错
完整代码示例
String s1[] = hh.split("\\r?\\n"); // 从第4个元素(索引3)开始,每轮跳过6个元素到下一组起始位 for (int i = 3; i < s1.length; i += 6) { // 逐个取出当前组的3个元素,先检查是否越界 System.out.println(s1[i]); if (i + 1 < s1.length) { System.out.println(s1[i + 1]); } if (i + 2 < s1.length) { System.out.println(s1[i + 2]); } // 如果需要把这三个元素作为一组处理,可以在这里扩展逻辑 // 比如 List<String> currentGroup = Arrays.asList(s1[i], s1[i+1], s1[i+2]); }
代码细节解释
- 循环起始与步长:
i = 3直接定位到第一组要提取的元素开头,i += 6确保下一轮直接跳到「跳过3个元素后的下一组起始位」(比如3→9→15…),完美匹配你要的间隔规则。 - 越界检查:考虑到数组末尾可能不足3个元素的情况,每次取
i+1、i+2时先判断是否在数组范围内,避免抛出ArrayIndexOutOfBoundsException。 - 扩展灵活性:如果需要把每组3个元素打包成一个单元(比如存入集合做后续处理),可以用
Arrays.asList快速将三个元素转为列表。
对应你的示例效果
假设你的数组s1是按每行分割后的结构:
org.springframework spring-jdbc 1.0-m4 org.apache.tomcat tomcat-jdbc 7.0.19 commons-configuration commons-configuration 20030311.152757 commons-io commons-io 0.1 org.springframework.security.oauth spring-security-oauth2 2.1.1.RELEASE
运行代码后会输出:
org.apache.tomcat tomcat-jdbc 7.0.19 commons-io commons-io 0.1
完全符合你要求的「跳过0-2取3-5、跳过6-8取9-11」的规则。
内容的提问来源于stack exchange,提问作者nascar895
相关产品推荐
相关产品推荐

