如何跳过Java字符串数组中的3个元素并获取下3个元素

nas*_*895 1 java loops

我想获取由3个元素分隔的Array的字符串。例如,我需要跳过3个元素0,1,2,并取3,4,5个元素。重复一遍。(跳过6,7,8并获得9,10,11),直到数组结束。我该怎么办?

String s1[] = hh.split("\\r?\\n");
System.out.println(s1[3]);

for (int i=0;i<s1.length; i++){

}
Run Code Online (Sandbox Code Playgroud)

子串输出:


            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


Run Code Online (Sandbox Code Playgroud)

Jep*_*ppe 5

使用模运算符和单个循环的解决方案。没有IndexOutOfBounds的风险。

for (int i = 0; i < list.length; i++) {
    if (i % 6 > 2) {
        System.out.println(list[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)

i % 6 < 3如果要代替数组中每6个元素中的前3个元素,则可以翻转条件。

编辑:下面将您的输入,并将其放在List<String[]>每个元素包含3行的位置。

import java.nio.file.*;
import java.util.stream.Stream;
import java.util.*;
import java.nio.charset.Charset;

public class Partition2 {
    public static void main(String[] args) {
        String[] input = ...

        try (Stream<String> stream = Arrays.stream(input)) {
            // /sf/answers/2433164541/
            String[] array = stream.map(line -> line.trim()).filter(line -> !line.isEmpty()).toArray(String[]::new);

            List<String[]> results = new ArrayList<String[]>();
            String[] tmp = new String[3];
            for (int i = 0; i < array.length; i++) {
                tmp[i % 3] = array[i];
                if (i % 3 == 2) {
                    results.add(tmp);
                    tmp = new String[3];
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)