0

我有 2 个数组列表。我遍历list1并将与seat_no匹配的数据存储到list2的索引中。

list1 包含:

|seat_no | id     |
===================
| 1      | 001    |
| 2      | 002    |
| 3      | 003    | 
| 4      | 004    |
| 7      | 005    |
| 10     | 006    |
| 11     | 007    |

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      |
| 11     | 007    | 11      |

list2 应包含的内容:其中 list2 的限制必须为 15

|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      |
| 11     | 007    | 11      |
| 12     |"blank" |"blank"  |
| 13     |"blank" |"blank"  |
| 14     |"blank" |"blank"  |
| 15     |"blank" |"blank"  |

到目前为止,这是我的代码...请帮助我..我打算使用数组,但我不知道它现在是否适用于我的代码..

ViewGridObject.java

public class ViewGridObject 
{
    public String stud_id, seat_no;

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

main.java

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

        try 
        {
            JSONObject jArray = new JSONObject(result);

            JSONArray stud_info = jArray.getJSONArray("stud_info");

            ca_list = new ArrayList<ViewGridObject>();

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

                map.put("id", String.valueOf(i));
                map.put("stud_id", e.getString("student_id"));
                map.put("seat_no", e.getString("seat_no"));
                to_take.add(map);

                ca_list.add(new ViewGridObject(e.getString("student_id"), e.getString("seat_no")));


            }

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

4 回答 4

4

只有在添加之前明确检查,
或者通过创建一个集成了 ArrayLIst 的新 MyArrayList 时才能限制这一点,但在 add() 中,当 size 大于 15 时不添加;在这种情况下你可以返回 false 。

我建议使用“在添加之前检查”d 方法:

int limit = 15;

if (list.size() < limit) {
  list.add(value);
}
于 2012-12-02T21:21:30.577 回答
4
List<ViewGridObject> list2 = new ArrayList<ViewGridObject>();

for(int i=0;i<50;i++) {
    try {
            list2.add(list1.get(i));
    } catch(Exception rr) {
            list2.add(new ViewGridObject("blank","blank");
    }
}
于 2012-12-03T13:36:03.363 回答
1

Arraylist 在实现上是无限的。几个选项;

  1. 使用数组并使用 Arrays.asList 执行 arraylist 函数
  2. 实现 AbstractList 并实现 add 方法,如

    如果(大小()> getBoundedSize())

如果您需要更清晰的示例,请告诉我

于 2012-12-02T21:22:44.313 回答
1

使用 Java 8,您可以将 ArrayList 转换为 Stream 并对其进行限制:

List<Object> largerArray = Arrays.asList(members);
largerArray.stream()
    .limit(3)
    .forEach(member -> {
        // ...
    });
于 2019-08-08T11:41:14.310 回答