كيفية فرز arraylist في جافا بدون مجموعات


الاجابه 1:

سؤال: كيف أقوم بفرز مصفوفة ملفات دون استخدام collections.sort؟

سهل - بنفس الطريقة التي تستخدمها في C أو ربما C ++. يدويا.

تقوم بالتكرار من خلال المصفوفة / القائمة. داخل جسم الحلقة الأولى لديك حلقة ثانية تقوم أيضًا بتكرار نفس عناصر المصفوفة / القائمة - مثال:

لـ (int iLength = lstArray.length ، iLoop = 0 ؛ iLoop لـ (int jLength = iLength ، jLoop = 0 ؛ jLoop { // هنا افعل المزيد }

من الداخل هنا ستقارن lstArray في index iLoop و jLoop وتغيير العناصر بناءً على النتائج باستخدام خوارزمية المبادلة. خوارزمية المبادلة بسيطة:

درجة الحرارة = = = درجة الحرارة

بعد هذه العملية (وعادة ما يتم إجراؤها بوظيفة / طريقة خاصة بها - أعتقد أن Java لديها طريقة مكتوبة بالفعل ولكن غير متأكد بنسبة 100٪) وانتهت بقية الحلقتين بالكامل ، يجب فرز المصفوفة. نعم ، إذا كنت ترغب في جعله أكثر قوة ، يمكنك التحقق للتأكد من أنك لا تنظر إلى نفس الفهرس (iLoop == jLoop) ، ولكن هذا ليس مهمًا حقًا لأن المقارنة يجب أن تكون مقارنة> أو <على أي حال هناك لن يكون هناك مبادلة لنفس الفهرس مثل lstArray.get (iLoop) .equals (lstArray.get (iLoop)) == صحيح !!!

حسنًا ، اذهب إلى المدرسة القديمة إذا كنت تريد تجنب Collections.sort ؛-)

لقد أخبرتك عن نوع الفقاعة ولكن يمكنك أيضًا ترميز نوع سريع إذا أردت - تلخص Java الكثير من الخوارزمية في Collections.sort ولكن إذا كنت تعرف ما تفعله ، فستكون أفضل حالًا.


الاجابه 2:

بالنسبة للقوائم ، أقوم بفرز دمج: أزل 2 من القائمة وفرزها ؛ خذ التالي 2 وفرزهم ؛ دمجهم في 4 ؛ كرر لإنشاء 4 أخرى ؛ دمج 4s في 8 ؛ كرر لإنشاء 8 أخرى ؛ دمج الـ 8 في 16 ؛ الخ ... القليل من الروتين المتكرر يمكنه التعامل مع كل المنطق بضجة بسيطة وقليل من النفقات العامة والتكلفة ليست سيئة للغاية.


الاجابه 3:

يمكنك إنشاء المقارنة الخاصة بك ، وتجاوز طريقة المقارنة ، على سبيل المثال

myCollection.sort (مقارن جديد () {public int قارن (T o1، T o2) {/ *… * /}})؛

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


الاجابه 4:

يعتمد على نوع البيانات الذي يحتفظ به Arraylist.

بالنسبة للأرقام ، يمكنك كتابة برنامج يأخذ Arraylist كمعامل وفرزه وما إلى ذلك لأنواع البيانات الأخرى.

paklim.org © 2021