>我有一个来自数据库的表格,查看下面给出的这个结构
id | col1 | col2
1 | item1 | item2
2 | item3 | item4
我已经声明了数组列表来保存如图所示的值
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);
}
你可以考虑一个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);
尝试创建一个对象来保存您的值,如下所示:
public class ObjectWrapper {
private String col1;
private String col2;
// getter and setters;
public String toString(){
return "col1: " + col1 + "col2: " + col2;
}
}
ArrayList<ObjectWrapper> dataList = new ArrayList<ObjectWrapper>();
for (int i = 0; i < jArray.length(); i++) {
JSONObject json_data = jArray.getJSONObject(i);
ObjectWrapper obj = new ObjectWrapper();
obj.setCol1(json_data.getString("col1")));
obj.setCol2(json_data.getString("col2")));
dataList.add(obj);
}
for (ObjectWrapper line : dataList) {
System.out.println("this is the element in the arraylist>>>>> " +line);
}
这是
最简单的方法
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());
或
for(int i=0;i<list.size();i++)
System.out.println(list.get(i));