سؤال

نظرا ل Item الذي تم إلحاقه ب Form, ما هي أفضل طريقة لمعرفة الفهرس الموجود في هذا العنصر في النموذج؟

Form.append(Item) سيعطيني الفهرس الذي تمت إضافته في البداية، ولكن إذا قمت لاحقًا بإدراج عناصر قبل ذلك، فسيكون الفهرس غير متزامن.

هل كانت مفيدة؟

المحلول

كان هذا أفضل ما يمكنني التوصل إليه:

private int getItemIndex(Item item, Form form) {
    for(int i = 0, size = form.size(); i < size; i++) {
        if(form.get(i).equals(item)) {
            return i;
        }
    }
    return -1;
}

لم أختبر هذا بالفعل ولكن يجب أن يعمل، أنا لا أحب الاضطرار إلى تعداد كل عنصر ولكن بعد ذلك لا ينبغي أن يكون هناك الكثير لذلك أعتقد أنه على ما يرام.

نصائح أخرى

حسنًا، هناك طريقتان فقط للقيام بذلك، نظرًا لأن واجهة برمجة التطبيقات (API) لا تحتوي على indexOf(Item) طريقة:

  1. يمكنك تحديث الفهرس الذي تحصل عليه عند إضافة ملف Item.لذلك عندما تقوم بإدخال آخر Item قبل العناصر الأخرى، سيتعين عليك تحديث مؤشرات تلك العناصر.يمكنك الاحتفاظ بنوع من مصفوفة الظل لهذا الغرض، لكن هذا يبدو مبالغًا فيه بعض الشيء.
  2. يمكنك تنفيذ حلقة عبر كافة عناصر النموذج باستخدام size و get طرق Form.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top