سؤال

ربما هذا بسيط حقا لكنني لم أستطع حقا كلمة ذلك بشكل صحيح على جوجل. لدي قائمة صفيف تحافظ على معلومات كل مؤشر ترابط. كل مؤشر ترابط له هوية الخاصة به. لذلك، في البداية:

myList.add(theIdOfTheThread, new InfoForTheThread()); //Add new thread info at index theIdOfTheThread

وعندما أريد معلومات:

myList.get(myId); //The info for the thread

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

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

المحلول

لهذا النوع من الوصول يجب أن تستخدم حقا صفيف، أو أفضل، hashmap. باستخدام قائمة لهذا غير فعال للغاية ومعقدة بلا داع. إذا قمت بإزالة عنصر من منتصف القائمة، فسوف يتطلب كل شيء، وستتطلب جميع المؤشرات فوق المرتبة التي قمت بإزالتها.

لن يعاني مجموعة من InfoForththetheread هذا، لكن ستحتاج إلى معرفة حجم الصفيف الذي ستحتاج إليه قبل البدء.

استخدم Hashmap بدلا من ذلك - يمكنك استخدام أعداد صحيحة للمفاتيح، ولن يؤدي الإزالة إلى النفايات.

HashMap<Integer,InfoForTheThread> myInfos = new HashMap<Integer,InfoForTheThread>( 10 );

إضافة واسترداد وإزالة إدخال:

myInfos.put( Integer.valueOf( 4 ), new InfoForTheThread() );
InfoForTheThread infoForFour = myInfos.get( Integer.valueOf( 4 ) );
InfoForTheThread infoForFour = myInfos.remove( Integer.valueOf( 4 ) );

نصائح أخرى

جرب hashtable. يمكنك استخدام معرف مؤشر الترابط كمفتاح ثم أدخل معلوماتك كقيم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top