أتذكر أنه خلال بحث وظيفي السابق ، واجهت مقابلة سألني سؤالًا أساسيًا للغاية. والسؤال هو: هناك 10 عناصر في قائمة ، وأريد حذف 3 عناصر منها الآن. كيف أفعل ذلك؟ لم أفكر في الأمر في ذلك الوقت ، لذلك قلت للتو أن القائمة لها طريقة إزالة خاصة بها ، والتي يمكن استخدامها مباشرة. قال ، يرجى توضيح ذلك بالتفصيل. قلت إنني أرغب في كتابة حلقة من أجل حلقة ، وعدد الحلقات هو طول القائمة ، ثم حذف العناصر التي تريد حذفها مباشرة في الحلقة.
في ذلك الوقت ، فكرت ، وسألت مثل هذا السؤال البسيط. قال القائم بإجراء المقابلة: "يمكنك تجربة ذلك بنفسك عندما تعود. تعرف على ما إذا كنت ستقوم بالإبلاغ عن خطأ إذا كتبت كما قلت. ثم كنت في حيرة من أمري. على الرغم من أن هذا كان سؤالًا بسيطًا ، إلا أنني لم أهتم مطلقًا بهذا التفاصيل الصغيرة في الترميز اليومي ، ويمكن تخيل نتائج المقابلة.
بعد أن عدت ، جربته مرة واحدة وأبلغت حقًا عن خطأ. اتضح أن عملية القائمة لم يتم تعديلها أثناء اجتيازها ، سواء تم حذفها أو إضافتها ، لأنه إذا تمت إضافة عناصر جديدة إلى المجموعة أثناء اجتيازها ، فإن ذلك سيؤدي إلى حلقة ميتة. أيضًا ، إذا تم حذف العناصر أثناء اجتيازها ، فإن ذلك قد يسبب مشاكل مثل عبور حدود الجدول التالي في اجتياز. طريقة التشغيل العامة هي الوظيفة التي يتم تنفيذها من خلال طريقة addall وطريقة عمليات الإزالة.
على سبيل المثال ، ما يلي
testpublic void mytestLearnmore () {list <string> testlist = new ArrayList <> () ؛ testlist.add ("1 yang") ؛ testlist.add ("1 li") ؛ testlist.add ("1 wang") ؛ testlist.add ("1 Zhang") ؛ testlist.add ("2 yang") ؛ testlist.add ("2 Sun") ؛ testlist.add ("2 Zhao") ؛ قائمة <Tring> temaddlist = new ArrayList <> () ؛ لـ (اختبار السلسلة: قائمة test) {if (test.startswith ("1")) {temaddlist.add (test) ؛ }} testlist.removeall (temaddlist) ؛ System.out.println (json.tojsonstring (قائمة اختبار)) ؛}نتيجة الطباعة هي: ["2 Yang" ، "2 Suns" ، "2 Zhao"]
هذه هي الطريقة الحقيقية للعمل. ومع ذلك ، فإن ما أريد أن أتحدث عنه اليوم هو في الواقع طريقة التجميع الجديدة لـ Java 8. على سبيل المثال ، قم أولاً بإنشاء مجموعة مؤقتة ثم وضع العناصر التي تحتاج إلى إزالتها في المجموعة المؤقتة من خلال اجتياز ، وأخيراً حذفها من المجموعة الأصلية ككل. وبهذه الطريقة ، تحتاج إلى كتابة خمسة أو ستة أسطر من التعليمات البرمجية ، ويمكنك القيام بذلك مع سطر واحد من التعليمات البرمجية في Java 8. هذا هو السطر التالي من التعليمات البرمجية:
testlist.removeif (test-> test.startswith ("1")) ؛يتمثل معنى هذا الرمز في إزالة العناصر التي تتوافق مع تنسيق المعلمة REMOFIF ، لذلك إذا قمت بطباعة قائمة الاختبار بعد هذا السطر من التعليمات البرمجية ، فلن تقوم بطباعة عناصر تبدأ بـ 1.
تتراكم هذه التفاصيل الصغيرة بالفعل في عملية الترميز اليومية. إذا كان هناك الكثير من المزالق ، فسوف تنتبه إليها عند كتابتها لاحقًا. تمامًا مثل استخدام متساوٍ في Java ، فأنت دائمًا تضع الثوابت المعروفة أمام متساوٍ لمنع استثناءات المؤشر الفارغ. عند استخدام تعبيرات Lambda للمجموعات ، يجب عليك أولاً الحكم على ما إذا كانت المجموعة خالية من خلال Objects.Nonnull (). عند طباعة الكائنات ، لا تستدعي بشكل مباشر طريقة TOSTRING () للكائن. يجب أن تمرر طريقة الكائنات الكائن للكائنات ، بحيث حتى لو كان الكائن لاغًا ، يمكنك طباعته. فئة الكائنات هي فئة أدوات جديدة تمت إضافتها إلى Java7.
لخص
ما سبق هو الطريقة المضافة حديثًا لـ Java8 في المجموعة التي قدمها المحرر لإزالة. آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، يرجى ترك رسالة لي. سوف يرد المحرر على الجميع في الوقت المناسب!