首页 > 解决方案 > 如何从二维数组中获取奇数行或偶数行?

问题描述

如何从二维数组中获取奇数行或偶数行?

String myData [][] = {
        {"test1","test1","test1","test1"},
        {"test2","test2","test2","test2"},
        {"test3","test3","test3","test3"},
        {"test4","test4","test4","test4"},
        {"test5","test5","test5","test5"},
        {"test6","test6","test6","test6"}
    };

并将它们写入 1 或 2 个新数组。需要获得:

String oddLines [][] = { 
    {"test1","test1","test1","test1"},
    {"test3","test3","test3","test3"},
    {"test5","test5","test5","test5"}};

String evenLines [][] = { 
    {"test2","test2","test2","test2"},
    {"test4","test4","test4","test4"},
    {"test6","test6","test6","test6"}};

myData 数组大小未知,可能 <5 , <6

标签: javaandroidarrays

解决方案


你可以用数学。你知道会有一半是偶数,一半是奇数。您可以使用它和循环将值从原始数组复制到新数组。就像是,

String[][] evenLines = new String[myData.length / 2][];
String[][] oddLines = new String[myData.length - evenLines.length][];
for (int i = 0; i < myData.length; i++) {
    oddLines[i / 2] = myData[i];
    if (i + 1 < myData.length) {
        evenLines[i / 2] = myData[i + 1];
        i++;
    }
}
System.out.printf("oddLines: %s%n", Arrays.deepToString(oddLines));
System.out.printf("evenLines: %s%n", Arrays.deepToString(evenLines));

输出

oddLines: [[test1, test1, test1, test1], [test3, test3, test3, test3], [test5, test5, test5, test5]]
evenLines: [[test2, test2, test2, test2], [test4, test4, test4, test4], [test6, test6, test6, test6]]

推荐阅读