我有一个对象的arraylist(list1)它包含seat_no,一个图像及其id。我如何遍历list1并将每个数据存储到另一个列表。前提是seat_no。匹配具有固定大小50的另一个列表(list2)的索引。我应该创建另一个对象类吗?请帮忙......
示例:
List1包含
|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 |
List2应包含
|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;
}
}
答案 0 :(得分:1)
没有。 Java ArrayList
支持null值并保持插入顺序。你可以在索引可用的对象中插入null。
有序集合(也称为序列)。该接口的用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引(列表中的位置)访问元素,并搜索列表中的元素。
List接口的可调整大小的数组实现。实现所有可选列表操作,并允许所有元素,包括null。除了实现List接口之外,此类还提供了一些方法来操作内部用于存储列表的数组的大小。 (这个类大致相当于Vector,除了它是不同步的。)
前: -
你有这个对象 - 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 :(得分: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);
}