2012-12-01 62 views
1

我有一个对象(list1)的arraylist它包含seat_no,一个图像和它的id。我如何遍历list1并将每个数据存储到另一个列表。前提是seat_no。匹配具有固定大小为50的另一个列表(列表2)的索引。我应该创建另一个对象类吗?请帮助...如何遍历ArrayList和存储到另一个ArrayList?

例如:

列表1中包含

|seat_no | id  | image   | 
====================================== 
| 1  | 001 | R.drawable.chair | 
| 2  | 002 | R.drawable.chair | 
| 3  | 003 | R.drawable.chair | 
| 4  | 004 | R.drawable.chair | 
| 7  | 005 | R.drawable.chair | 
| 10  | 006 | R.drawable.chair | 

列表2应该包含

|index | id  | seat_no | 
============================= 
| 1  | 001 | 1  | 
| 2  | 002 | 2  | 
| 3  | 003 | 3  | 
| 4  | 004 | 4  | 
| 5  |"blank" |"blank" | 
| 6  |"blank" |"blank" | 
| 7  | 005 | 7  | 
| 8  |"blank" |"blank" | 
| 9  |"blank" |"blank" | 
| 10  | 006 | 10  | 

这里是我的代码

main.java

ArrayList<HashMap<String, String>> take = new ArrayList<HashMap<String, String>>(); 

     try 
     { 
      JSONObject jsonArray = new JSONObject(result); 

      JSONArray info = jsonArray.getJSONArray("info"); 

      list1 = new ArrayList<ViewGridObject>(); 

      for (int i = 0; i < info.length(); i++) 
      { 
       HashMap<String, String> map = new HashMap<String, String>(); 
       JSONObject e = info.getJSONObject(i); 

       map.put("id", String.valueOf(i)); 
       map.put("sid", e.getString("id")); 
       map.put("flag", Integer.toString(seat[0])); 
       map.put("seat_no", e.getString("seat_no")); 
       take.add(map); 

       list1.add(new ViewGridObject(e.getString("id"), R.drawable.chair, e.getString("seat_no"))); 


      } 

ViewGridObject.java

public class ViewGridObject 
{ 
public String stud_id, seat_no; 
int chair; 

public ViewGridObject(String stud_id, int chair, String seat_no) 
{ 
    this.stud_id = stud_id; 
    this.chair = chair; 
    this.seat_no = seat_no; 

} 
} 

回答

1

号的Java ArrayList支持null值,并将其插入维持秩序。你可以在有索引的对象可用的地方插入null。

有序集合(也称为序列)。该接口的用户可以精确控制每个元素插入到列表中的哪个位置。用户可以通过整数索引(列表中的位置)访问元素,并搜索列表中的元素。

List接口的可调整大小的实现。实现所有可选的列表操作,并允许所有元素,包括null。除了实现List接口之外,该类还提供了一些方法来控制用于内部存储列表的数组大小。 (这个类是大致相当于载体,但它是不同步的。)

例如: - 你有这样的对象 - ViewGridObject1,ViewGridObject2, ViewGridObject3, ViewGridObject4,ViewGridObject7;

list1.add(ViewGridObject1); 
list1.add(ViewGridObject2); 
list1.add(ViewGridObject3); 
list1.add(ViewGridObject4); 
list1.add(null); 
list1.add(null); 
list1.add(ViewGridObject7); 

所以你的列表将包含 - obj1, obj2, obj3, obj4, null, null, obj7,...

1

创建新列表比较容易:

List<ViewGridObject> list2 = new ArrayList<ViewGridObject>(); 
int i = 0; 
for (ViewGridObject o : list1) { 
    for (i++; !o.seat_no.equals(i + ""); i++) { 
     list2.add(new ViewGridObject(null, 0, i + "")); 
    } 
    list2.add(o); 
} 
+0

谢谢!我足够接近!但我如何设置它,以便它将限制list2的大小为50.例如,list1包含40,我想将list1的所有40个元素存储到list2,其余10个将为“”或null。但在我的情况,现在我的名单停在40它不会继续到50 .. – oyan11

相关问题