سؤال

وأنا محبط جدا لأنني لا يمكن أن يبدو لمعرفة لماذا مجموعات خلط لا يعمل بشكل صحيح.

ودعونا نقول أن أحاول لخلط مجموعة randomizer.

int[] randomizer = new int[] {200,300,212,111,6,2332}; 
Collections.shuffle(Arrays.asList(randomizer));

لسبب البقاء فرز العناصر بالضبط نفس الشيء أم لا أسميه أسلوب المراوغة. أيه أفكار؟

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

المحلول

وArrays.asList لا يمكن استخدامها مع صفائف من الأوليات. استخدام هذا بدلا من ذلك:

Integer[] randomizer = new Integer[] {200,300,212,111,6,2332}; 
Collections.shuffle(Arrays.asList(randomizer));

ونفس القاعدة تنطبق على معظم الفئات في إطار مجموعات، في أنه لا يمكنك استخدام أنواع بدائية.

والرمز الأصلي (مع int[]) جمعت ما يرام، ولكن لم يعمل على النحو المنشود، بسبب سلوك طريقة asList variadic: انها مجرد يجعل قائمة عنصر واحد، مع مجموعة int بصفتها عضوا الوحيد

نصائح أخرى

وكريس الجواب الصحيح.

وكما قلت في تعليق على الجواب كريس، ومجموعة الأساسية الخاصة بك تتغير بشكل مناسب ما لم يحتاج arraylist في النمو، والقائمة يخلق العناصر واحد ونسخ جديدة فيه.

وأنت قد ترغب في الاحتفاظ إشارة إلى القائمة وأعاد على أنه بعد الدعوة Arrays.asList، وليس تكرار عبر مجموعة بعد ذلك، أعاد على القائمة بدلا من ذلك.

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