Доступ к многомерным значениям ArrayList

1

Я получаю 3 столбца для каждой строки из таблицы mysql с помощью ResultSet. Я не уверен в количестве строк, которые я получу, используя запрос. Чтобы сохранить эти строки, я использую ArrayList качестве приведенного ниже кода:

while (rs.next()) 
{
    String[] row = new String[numcols];
    for (int i = 0; i < numcols; i++) 
    {
        row[i] = rs.getString(i + 1);                                  
    }  
    rowsList.add(row);                     
}
rs.close();

Когда я отлаживал код, я обнаружил, что значения столбцов присутствуют в ArrayList. Теперь я не могу получить доступ к значениям столбцов, потому что rowsList.get(index) будет возвращать только значение по определенному индексу, но у меня есть еще 3 значения в этом индексе, как получить доступ к этим значениям.

  • 0
    Пожалуйста, следуйте моему ответу. Удачи в использовании списка и класса, а не в использовании массива таким сложным способом
  • 0
    try-- String colValue=rowsList.get(rowIndex)[columnIndex];
Показать ещё 1 комментарий
Теги:
arraylist

3 ответа

3
Лучший ответ

List.get() в вашем случае возвращает String массив: String[]. Вы можете получить доступ к элементам массива с помощью операторов индекса []:

String[] row = rowList.get(0);
for (int i = 0; i < row.length; i++)
    System.out.println(row[i]);

// Or you can use the enhanced for to loop through the array:
for (String s : row)
    System.out.println(s);

Если вы хотите обработать все строки:

for (String[] row : rowList) {
    // Process row
    for (String s : row) {
        // Do something with the string
    }
}
2

Я хотел бы предложить вам узнать о List.

А второй - создать класс, содержащий все, что исходит из вашего запроса.

И, наконец, сохраните каждый объект класса в массиве.

пример

Предположим, что вы получили идентификаторы, столбцы имен и адресов из вашего запроса

Создать класс

public class YourClass{
int id;
String name, address;
//create getters and setters or use a constructor
//example of setter to set field id
public void setId(int id){
this.id = id;
     }
}

А затем, извлекая записи из запроса, создайте объект своего класса и задайте столбцы как поле своего класса следующим образом:

YourClass anObject = new YourClass();
anObject.setId(id);// get similar columns from query
anObject.setName(name);

И, наконец, добавьте объект в ArrayList, как показано ниже:

yourArrayList.add(anObject);

Для того, чтобы заботиться о множественном числе записей, которые необходимо сохранить этот код внутри в while петля и определить свой List, прежде чем время цикла следующим образом:

List<YourClass> yourArrayList = new ArrayList<YourClass>();

И я думаю, что это лучший подход, поскольку он использует ООП, который вы должны начать использовать вместо использования голого массива.

1

вы хотите указать, какой объект находится в списке. для этого сделайте List List<String[]> rowsList = new ArrayList<String[]>();

затем использовать while цикл

while (rs.next()) 
{
    String[] row = new String[numcols];
    for (int i = 0; i < numcols; i++) 
    {
        row[i] = rs.getString(i + 1);                                  
    }  
    rowsList.add(row);                     
}
rs.close();

когда вы обращаетесь к каждому элементу в списке, он всегда возвращает String[] которую вы можете перебирать, чтобы получить значения.

for(int i = 0 ; i< rowsList.size() ; i++){
   rowsList.get(i);//will return a String[]
}

ИЛИ

for(String[] rows : rowsList){
   //iterate the rows
}
  • 0
    ум, чтобы сказать мне, почему понизили?
  • 0
    да, совершенно правильно. Почему вниз?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню