Arrays是否有类似迭代器的函数(或变通方法)?

时间:2017-02-06 22:21:24

标签: java arrays

我正在尝试将一系列字母作为字符串添加到2D数组中。所以object [17]转到endState[0][0]; [18]endState[0][1]等等。

我遇到的问题是使用外部for循环,它只是将[32]处的对象添加到矩阵中的所有单元格。通常我会在使用其他集合时使用迭代器来处理这个问题,但是,据我所知,对于数组是不可能的(我可能已经猜到了我是新手)。

String [][] endState = new String[4][4];        
for(int i1=17;i1<33;i1++){          
    for(int r=0;r<endState.length;r++){
        for(int c=0;c<endState.length;c++){
        endState[r][c] = config.split("")[i1];
        }
    }                       
}

关于如何克服这个问题的任何建议?

非常感谢。

3 个答案:

答案 0 :(得分:2)

你需要这样的东西吗?

String[] configs = config.split("");
String [][] endState = new String[4][4];        
int i = 17;        
for(int r=0;r<endState.length;r++){
    for(int c=0;c<endState.length;c++){
        endState[r][c] = configs[i++];
    }
}

答案 1 :(得分:2)

如果你想把字母变成你可以做的。

String[] letters = config.substring(17).split("");
String[][] endState = new String[4][];
for (int i = 0; i < endState.length; i++)
    endState[i] = Arrays.copyOf(letters, i * 4, 4);

或者你可以做到

String[][] endState = IntStream.range(0, 4)
                                .mapToObject(i -> Arrays.copyOf(letters, i * 4, 4))
                                .toArray(s -> new String[s][]);

答案 2 :(得分:0)

如果使用Java 8,则可以按如下方式执行:

Arrays.asList(someArray).foreach(item -> {});

Arrays.asList(someArray).stream().ANY_STREAM_FUNCTION_HERE

如果你想迭代你的2dim数组:

Arrays.asList(someArray).foreach(item -> {
    Arrays.asList(item).foreach(item2 -> {[Do your job here]})
});

你可以用Java 7的方式做到这一点:

for(item : Arrays.asList(someArray)) {
    ...
}

无论如何,您总是可以使用Arrays.asList(someArray)从数组中获取列表。