Как получить только четные или нечетные строки из массива? - PullRequest
1 голос
/ 12 марта 2020
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"}
};

ArrayList<ArrayList<String>> myArray = new ArrayList<>();

for (int i = 0; i < myData.length; i++) {
    ArrayList<String> tmpArray = new ArrayList<>();
    tmpArray.add(myData[i][0]);
    tmpArray.add(myData[i][1]);
    tmpArray.add(myData[i][2]);
    tmpArray.add(myData[i][3]);
    myArray.add(tmpArray);
}

Мне нужно это:

[[test1, test1, test1, test1], [test3, test3, test3, test3], [test5, test5, test5, test5]]

или

[[test2, test2, test2, test2], [test4, test4, test4, test4], [test6, test6, test6, test6]]

Как разделить строки на четные и нечетные?

Сделать массив с четными и нечетными строками?

Пробовал делать с i + = 2, ошибка (показывает. Только 3 элемента и их 6)

Могу ли я сделать что-то подобное? :

System.arraycopy(myData,0,myData,1,1);
myData = Arrays.copyOf(myData, 4);

Но поэтому я ограничил количество элементов только 4 ...

Может ли быть так, что вы можете копировать только четные или нечетные элементы?

myArray.size() - возвращает 6 элементов, а не 3 ... из-за этого возникает ошибка

Ответы [ 5 ]

1 голос
/ 12 марта 2020

Вы можете просто сделать это по этому коду:

    ArrayList<ArrayList<String>> x= new ArrayList<>();

    for (int j = 0; j < x.length; j+=2) {
        ArrayList<String> y= new ArrayList<>();
        y.add(myData[j][0]);
        y.add(myData[j][1]);
        y.add(myData[j][2]);
        y.add(myData[j][3]);
        myArray.add(tmpArray);
    }
1 голос
/ 12 марта 2020

Этот код даст вам два списка, один из которых содержит четные массивы, а другой содержит нечетные массивы. (Предполагается, что эта схема чередования четных и нечетных индексов продолжается)

Это прекрасный пример того, когда оператор мода (%) может быть очень полезен

  List<String[]> oddList = new ArrayList<>();
  List<String[]> evenList = new ArrayList<>();
  for (int i = 0; i < myData.length; i++) {
    if (i%2 == 0) {
      oddList.add(myData[i]);
    }
    else {
      evenList.add(myData[i]);
    }
  }
1 голос
/ 12 марта 2020
public static List<String[]> getOddLines(String[][] table) {
    List<String[]> lines = new ArrayList<>(table.length / 2);

    for (int row = 0; row < table.length; row += 2)
        lines.add(table[row]);

    return lines;
}

public static List<String[]> getEvenLines(String[][] table) {
    List<String[]> lines = new ArrayList<>(table.length / 2);

    for (int row = 1; row < table.length; row += 2)
        lines.add(table[row]);

    return lines;
}
1 голос
/ 12 марта 2020
for(int i = 0; i < myArray.size();i++){
for(int j = 0; j < myArray.get(i).size() ; j++){
if(i % 2 == 0)
System.out.print(myArray.get(i).get(j)+" ");
}
System.out.println("");
}

Выход

test1 test1 test1 test1 
test3 test3 test3 test3 
test5 test5 test5 test5 
0 голосов
/ 12 марта 2020

Можем ли мы использовать что-то вроде этого:

public class Demo {

    public static void main(String[] args) throws IOException {

        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"}
        };

        ArrayList<ArrayList<String>> myArray = new ArrayList<>();

        for (int i = 0; i < myData.length; i+=2) {
            ArrayList<String> tmpArray = new ArrayList<>();
            tmpArray.add(myData[i][0]);
            tmpArray.add(myData[i][1]);
            tmpArray.add(myData[i][2]);
            tmpArray.add(myData[i][3]);
            myArray.add(tmpArray);
        }
        myArray.forEach(strings -> {
            System.out.println(strings);
        });
    }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...