在行之后的arraylist行中打印项目以获取列中的特定索引值

时间:2017-05-18 12:41:11

标签: java mysql arrays json arraylist

我有一个数据库中的表,用于查看下面给出的结构

id | col1  | col2
1  | item1 | item2
2  | item3 | item4

我已声明arraylist保持显示的值

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

我已声明json数组来保存数据库中的结果数据数组

JSONArray jArray = new JSONArray(result);

我正在遍历json数组并在数组列表中添加项目,如图所示

 for (int i = 0; i < jArray.length(); i++) {
     JSONObject json_data = jArray.getJSONObject(i);
     dataList.add(json_data.getString("col1"));
     dataList.add(json_data.getString("col2"));

}

如何遍历arraylist以逐行获取项目,以便我可以按索引位置在某列中进行数据处理。下面是我的尝试,但它没有按预期工作,因为它迭代打印出所有内容

for (String line : dataList) {
System.out.println("this is the element in the arraylist>>>>> " +line);
}

3 个答案:

答案 0 :(得分:1)

您可以考虑String数组的列表,以便每个条目代表一行:

清单:

ArrayList<String[]> dataList = new ArrayList<String[]>();

填充列表:

 for (int i = 0; i < jArray.length(); i++) {

     JSONObject json_data = jArray.getJSONObject(i);
     String[] strArray = new String[2];
     strArray[0] = json_data.getString("col1");
     strArray[1] = json_data.getString("col2");
     dataList.add(strArray);

 }

使用清单:

for (String[] line : dataList) {    

    System.out.println("Elements in the arraylist >>>>> " +line[0] + " " +line[1]);    

}

或者,对于更通用的方式,您可以使用枚举:

private enum Column {

        COL1("col1"), COL2("col2");

        private String name;

        public String getName() {
            return name;
        }

        Column(final String name) {
            this.name = name;
        }

}

然后填充列表:

 for (int i = 0; i < jArray.length(); i++) {

     JSONObject json_data = jArray.getJSONObject(i);
     String[] strArray = new String[Column.values().length];
     for (Column column : Column.values()){
        strArray[column.ordinal()] = json_data.getString(column.getName());
     }
     dataList.add(strArray);

 }

并且有一个可以过滤一列或多列的显示方法:

private void displayColumns(Column ...columns){

    for(Column column : columns){

        //System.out.println(column.getName());

        for (String[] line : dataList) {    

            System.out.println( line[column.ordinal()]);    

        }
    }
}

您可以将此方法称为例如:

displayColumns(Column.COL1);
displayColumns(Column.COL2);
displayColumns(Column.COL1, Column.COL2);

答案 1 :(得分:1)

尝试创建一个Object来保存你的值:

string1

答案 2 :(得分:1)

这是最简单的方法

public Class A{
private int id;
private String col1;
private String col2;
@Override
public String toString(){
       return "Id: "+id+ " col1: " + col1 + " col2: " + col2;
    }
}
//Main Method
ArrayList<A> list=new Gson.fromJson(result,A.class);
for(A a:list)
System.out.println(a.toString());

OR

for(int i=0;i<list.size();i++)
System.out.println(list.get(i));