واجهة التجميع: المجموعة هي واجهة التجميع الأساسية ، حيث تعلن عن الطرق المشتركة المناسبة لمجموعات Java (بما في ذلك فقط المجموعة والقائمة). قم بتعيين وسرد كلا من الاتصال والخريطة
طرق واجهة التجميع:
إضافة منطقية (كائن O): أضف مرجعًا إلى كائن إلى المجموعة
void clear (): حذف جميع الكائنات في المجموعة ، أي ، لم يعد يحمل إشارات إلى هذه الكائنات
منطقية isempty (): تحديد ما إذا كانت المجموعة فارغة
يحتوي Boolean على (كائن O): يحدد ما إذا كان هناك إشارة إلى كائن معين في المجموعة
ITERAR iterator (): إرجاع كائن Iterator يمكن استخدامه للتكرار على العناصر في مجموعة
إزالة منطقية (كائن O): يزيل إشارة إلى كائن من المجموعة
حجم int (): إرجاع عدد العناصر في المجموعة
كائن [] tararray (): إرجاع صفيف يحتوي على جميع العناصر في المجموعة
حول: يتم استخدام أساليب Iterator () و tararray () لجميع عناصر المجموعة. السابق يعيد كائن Iterator ، ويعيد الأخير صفيفًا يحتوي على جميع العناصر في المجموعة.
تعلن واجهة التكرار عن الطرق التالية:
Hasnext (): يحدد ما إذا كانت العناصر في المجموعة قد تم اجتيازها. إذا لم يكن كذلك ، فأعود صحيحًا
التالي (): أعد العنصر التالي
إزالة (): قم بإزالة العنصر السابق الذي تم إرجاعه بواسطة الطريقة التالية () من المجموعة.
SET (SET): SET هو أبسط نوع المجموعة. لا يتم فرز الكائنات في المجموعة بطريقة محددة ، ولا توجد كائنات مكررة. تقوم واجهة SET بشكل أساسي بتنفيذ فئتين للتنفيذ:
Hashset: تستخدم فئة Hashset خوارزمية التجزئة للوصول إلى الكائنات في المجموعة ، وسرعة الوصول سريعة نسبيًا.
Treeset: تقوم فئة Treeset بتنفيذ واجهة SortedSet ، والتي يمكنها فرز الكائنات في المجموعة.
استخدام المجموعة: يخزن الإشارات إلى الكائنات ، ولا توجد كائنات مكررة
set set = new hashset () ؛ string s1 = new string ("Hello") ؛ String S2 = S1 ؛ String S3 = New String ("World") ؛ set.add (s1) ؛ set.add (s2) ؛ set.add (s3) ؛ System.out.println (set.size ()) ؛ // عدد الكائنات في مجموعة الطباعة 2.
كيف تحدد طريقة ADD () SET ما إذا كان الكائن قد تم تخزينه في المجموعة؟
isexists المنطقية = false ؛ iterator iterator = set.iterator () ؛ بينما (it.hasnext ()) {string oldstr = it.next () ؛ if (newstr.equals (oldstr)) {isexists = true ؛}}القائمة: تتمثل سمة القائمة في تخزين عناصرها بطريقة خطية ، ويمكن تخزين كائنات مكررة في المجموعة.
تشمل فئات التنفيذ الرئيسية لواجهة القائمة:
ArrayList (): يمثل أنه يمكن تغيير الطول إلى صفيف. يمكن الوصول إلى العناصر بشكل عشوائي ، وسرعة إدخال العناصر وحذفها في ArrayList () بطيئة.
LinkedList (): يستخدم بنية بيانات قائمة مرتبطة في التنفيذ. الإدراج السريع والحذف ، والوصول البطيء.
للوصول العشوائي للقائمة ، فإنه لا يتم استرداد العناصر بشكل عشوائي في موقع معين. يتم إعادة طريقة GET (int Index) في القائمة إلى الكائن في المجموعة في موضع الفهرس المحدد بواسطة فهرس المعلمة ، ويبدأ المنشأة من "0". طريقتان أساسية لاسترداد جميع الكائنات في المجموعة:
1: للحلقة و Get () الطريقة:
لـ (int i = 0 ؛ i <list.size () ؛ i ++) {system.out.println (list.get (i)) ؛}2: استخدم Iterator:
iterator it = list.iterator () ؛ بينما (it.hashNext) {system.out.println (it.next) ؛}
الخريطة: الخريطة هي مجموعة من كائنات مفتاح الخريطة وكائنات القيمة. يحتوي كل عنصر منه على زوج من الكائنات الرئيسية وكائنات القيمة.
عندما لا يتم مورث الخريطة من واجهة التجميع ، كلما تم إعطاء كائن رئيسي ، سيتم إرجاع كائن القيمة المقابل.
الطرق الشائعة للخريطة:
1 إضافة وحذف العمليات:
وضع الكائن (مفتاح الكائن ، قيمة الكائن): أضف عناصر إلى المجموعة
إزالة الكائن (مفتاح الكائن): يزيل العناصر المتعلقة بالمفتاح
void putall (map t): يضيف جميع العناصر من صورة محددة إلى الصورة
باطل clear (): قم بإزالة جميع الخرائط من الصورة
2 عمليات الاستعلام:
الكائن GET (مفتاح الكائن): احصل على القيمة المتعلقة بمفتاح الكلمة الرئيسية. لا يُسمح بتكرار الكائنات الرئيسية في مجموعة الخريطة ، أي نتيجة لأي كائنين رئيسيين تتم مقارنته بواسطة طريقة متساوية () خاطئة. ومع ذلك ، يمكن تعيين أي مفاتيح متعددة حصريًا على نفس كائن القيمة.
الاتصالات: فئة فائدة جمع. يوفر Connections طرقًا ثابتة عملية لمجموعات Java
تلخيص:
تم تلخيص الاستخدام الأساسي لمجموعات Java. ما سبق هي مجموعات جافا الأكثر استخدامًا. للحصول على التفاصيل ، يرجى الرجوع إلى مستند JDK Help. هاها ، هناك العديد من تطبيقات الخريطة ، وهذا هو. يوفر Connections العديد من الطرق العملية للقائمة /الخريطة ، وهو أمر مفيد للغاية للتنمية اليومية.
يحتوي Boolean على مفتاح (مفتاح الكائن): يحدد ما إذا كان هناك مفتاح كلمة رئيسية في الصورة
يحتوي Boolean ContainSvalue (قيمة الكائن): يحدد ما إذا كانت هناك قيمة في الصورة
int size (): إرجاع عدد الخرائط في الصورة الحالية
منطقية isempty (): يحدد ما إذا كان هناك أي رسم خرائط في الصورة
القائمة تنقذ الكائنات بالترتيب الذي تدخل به الكائنات ، دون فرز العمليات أو التحرير. يقبل SET مرة واحدة فقط لكل كائن ويستخدم طريقة الفرز الداخلية الخاصة به (عادةً ما تهتم فقط بما إذا كان العنصر ينتمي إلى تعيينه ، وليس طلبه - وإلا يجب استخدام القائمة).
تقوم MAP أيضًا بحفظ نسخة من كل عنصر ، ولكن هذا يعتمد على "المفتاح" و Map يحتوي أيضًا على فرز مدمج ، بحيث لا يهتم بالترتيب الذي تتم إضافته. إذا كان الترتيب الذي تتم فيه إضافة العناصر مهمًا بالنسبة لك ، فيجب عليك استخدام LinkedHashset أو LinkedHashMap.
طريقة قائمة الوظيفة:
يوجد في الواقع نوعان: أحدهما هو قائمة ArrayList الأساسية ، التي تتمتع بميزة الوصول العشوائي إلى العناصر ، والآخر هو قائمة LinkedList الأكثر قوة ، والتي لم يتم تصميمها للوصول العشوائي السريع ، ولكن لديها مجموعة أكثر عمومية من الطرق.
القائمة: الطلب هو أهم ميزة القائمة: يضمن الحفاظ على ترتيب العناصر المحدد. تضيف القائمة العديد من الطرق إلى المجموعة ، مما يتيح إدخال وإزالة العناصر في منتصف القائمة (يوصى به هذا فقط لقائمة LinkedList.) يمكن للقائمة إنشاء ListIrator ، والتي يمكنها استخدامها لاجتياز القائمة من اتجاهين ، أو إدراج العناصر وإزالتها من منتصف القائمة.
ArrayList: قائمة تنفذها Array. يسمح بالوصول العشوائي السريع إلى العناصر ، ولكن إدراج العناصر وإزالتها في منتصف القائمة بطيئة. يجب استخدام ListIratorator فقط للتكرار من خلال قائمة ArrayList من الخلف إلى الأمام ، بدلاً من إدخال العناصر وإزالتها. لأن هذا أغلى بكثير من LinkedList.
LinkedList: تم تحسين الوصول المتسلسل ، كما أن النفقات العامة للإدراج والحذف في منتصف القائمة ليست عالية جدًا. الوصول العشوائي بطيء نسبيا. (استخدم ArrayList بدلاً من ذلك.) لديك أيضًا الطرق التالية: addFirst () ، addlast () ، getFirst () ، getLast () ، removeFirst () و readovelast (). هذه الطرق (غير المحددة في أي واجهة أو فئة أساسية) تجعل LinkedList يستخدم كمكدس وقائمة انتظار وقائمة انتظار ثنائية الاتجاه.
طريقة وظيفة SET:
يحتوي SET على نفس الواجهة تمامًا مثل المجموعة ، لذلك لا توجد وظائف إضافية ، على عكس قائمتين مختلفتين في المقدمة. في الواقع ، SET عبارة عن مجموعة ، لكن السلوك مختلف. (هذا تطبيق نموذجي للميراث والتفكير متعدد الأشكال: أداء سلوكيات مختلفة.) لا ينقذ المجموعة عناصر مكررة (أما بالنسبة لكيفية الحكم على العناصر ، فهي أكثر مسؤولية)
المجموعة: يجب أن يكون كل عنصر مخزّن في المجموعة فريدًا لأن المجموعة لا تحفظ عناصر مكررة. يجب أن يحدد العنصر المضافة إلى المجموعة طريقة متساوية () لضمان تفرد الكائن. SET لديها بالضبط نفس الواجهة مثل المجموعة. لا تضمن الواجهة المحددة ترتيب عناصر الصيانة.
Hashset: مجموعة مصممة للبحث السريع. يجب أن يحدد الكائن المخزّن في Hashset Hashcode ().
Treeset: ضبط في ترتيب حفظ ، الطبقة الأساسية هي بنية شجرة. استخدمه لاستخراج التسلسلات المطلوبة من المجموعة.
LinkedHashSet: لديه سرعة استعلام Hashset ، ويستخدم داخليًا القائمة المرتبطة للحفاظ على ترتيب العناصر (أمر الإدراج). لذلك عند استخدام جهاز التكرار لتجارة المجموعة ، سيتم عرض النتائج بالترتيب الذي يتم فيه إدراج العناصر.
طريقة وظيفة الخريطة:
يضيف الطريقة (مفتاح الكائن ، قيمة الكائن) "قيمة" (تريد شيئًا) و "مفتاح" مرتبط بـ "القيمة" (باستخدامه للعثور). تقوم الطريقة GET (مفتاح الكائن) بإرجاع "القيمة" المرتبطة بـ "المفتاح" المعطى. يمكنك استخدام ContentKey () ويحتوي على Value () لاختبار ما إذا كان يتم تضمين "مفتاح" أو "قيمة" في الخريطة.
تحتوي مكتبة فئة Java القياسية على عدة خريطة مختلفة: HashMap ، Treemap ، LinkedHashMap ، PeachashMap ، IdentityHashMap. لديهم جميعًا نفس خريطة الواجهة الأساسية ، ولكن سلوكهم ، وكفاءتهم ، واستراتيجيات الفرز ، وتوفير دورة حياة الأشياء ، وتحديد ما يعادل "المفاتيح".
كفاءة التنفيذ هي مشكلة كبيرة مع الخريطة. إذا نظرت إلى ما سيفعله () ، فستفهم لماذا البحث عن "مفتاح" في ArrayList بطيء للغاية. وهذا هو المكان الذي يسرع فيه HashMap. يستخدم HashMap قيمة خاصة تسمى رمز التجزئة لاستبدال عمليات البحث البطيئة للمفاتيح.
"Have Code" هو "فريد نسبيًا" لتمثيل قيمة int للكائن ، ويتم إنشاؤه عن طريق تحويل معلومات معينة من الكائن. يمكن لجميع كائنات Java إنشاء رموز التجزئة لأن HashCode () هي طريقة محددة في كائن الفئة الأساسية.
يستخدم HashMap hashcode () للكائن للاستعلام السريع. هذه الطريقة يمكن أن تحسن بشكل كبير الأداء.
الخريطة: تحافظ على ارتباط "أزواج القيمة الرئيسية" حتى تتمكن من العثور على "القيم" من خلال "مفاتيح"
HASHMAP: تعتمد الخريطة على تطبيق جدول التجزئة. تم إصلاح النفقات العامة لإدخال "أزواج القيمة الرئيسية" والاستعلام عنها. يمكن تعيين سعة القدرة وعامل تحميل عامل التحميل من خلال المُنشئ لضبط أداء الحاوية.
LinkedHashMap: على غرار hashmap ، ولكن عندما يتكرر عليه ، فإن الترتيب الذي "زوج القيمة الرئيسية" هو ترتيب الإدراج الخاص به ، أو ترتيب أقل استخدامًا مؤخرًا (LRU). فقط أبطأ قليلا من hashmap. من الأسرع إرسالها عند الوصول إليها بشكل تكراري لأنه يستخدم القوائم المرتبطة للحفاظ على الطلب الداخلي.
Treemap: التنفيذ على أساس بنية بيانات الأشجار الحمراء والأسود. عندما تنظر إلى "مفتاح" أو "أزواج القيمة الرئيسية" ، يتم فرزها (يتم تحديد الترتيب بالمقارنة أو المقارنة). يتميز Treemap بحقيقة أن النتائج التي تحصل عليها يتم فرزها. Treemap هي الخريطة الوحيدة ذات طريقة submap () ، والتي يمكن أن تُرجع الشجرة الفرعية.
DeferHashMap: يُسمح أيضًا بإصدار خريطة مفتاح ضعيفة ، والكائنات المستخدمة في الخريطة: تم تصميم هذا لحل المشكلات الخاصة. إذا لم تشير أي مرجع خارج الخريطة إلى "مفتاح" ، فيمكن إعادة تدوير هذا "المفتاح" بواسطة جامع القمامة.
تحديد HashMap: استخدم == بدلاً من متساوٍ () لمقارنة "المفاتيح". مصمم خصيصا لحل المشكلات الخاصة.