访问多维ArrayList值

时间:2014-09-02 05:13:44

标签: java arraylist

我使用ResultSet从mysql表中获取每行3列。我不确定使用查询得到的行数。要存储这些行,我使用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个值如何访问这些值。

3 个答案:

答案 0 :(得分: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
    }
}

答案 1 :(得分:2)

我建议您了解List

第二个是创建一个类,其中包含来自查询的所有内容。

最后将类的每个对象保存到数组中。

示例

假设您从查询中获得 ID 名称地址

创建课程

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循环中 并在while循环之前定义List,如下所示:

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

我认为这是最佳方法,因为它使用OOP而不是使用裸阵列。

答案 2 :(得分: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
}