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"  |

これまでのコードは次のとおりです... plsは私を助けてくれます..配列を使用する予定ですが、現在のコードに適用できるかどうかはわかりません..

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
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 に答える
4

追加する前に明示的にチェックするか、ArrayLIst が統合されている新しい MyArrayList を作成することによってのみ制限できます
が、サイズが 15 を超える場合は add() で追加しません。その場合、false を返すことができます。

「広告する前に確認する」アプローチを使用することをお勧めします。

int limit = 15;

if (list.size() < limit) {
  list.add(value);
}
于 2012-12-02T21:21:30.577 に答える
1

Arraylist は実装によって無限です。いくつかのオプション;

  1. 配列を使用し、Arrays.asList を使用して arraylist 関数を実行する
  2. AbstractList を実装し、次のような add メソッドを実装します

    if (size()> getBoundedSize())

より明確な例が必要な場合はお知らせください

于 2012-12-02T21:22:44.313 に答える