حين تتعامل مع لغة برمجية معينة و تجد تقنية محددة تفي بالغرض دائما، فأنت ترفض الإستغناء عنها، بل حتى انك لا تتقبل إستخدام او وجود تقنيات شبيهة لها قد تكون أفضل او أسوأ أحيانا، أفضل مثال على ذلك هو الـ Arrays فهي الأكثر إستخداما تقريبا في مجموعة من اللغات البرمجية، إن اردت تخزين مجموعة من البيانات و المعطيات في Object محدد فإستخدم الـ Arrays ( المصفوفات ) و رغم وجود نمطين آخرين يسمحان لك بفعل نفس الشيئ و هما الـ Sets و الـ Maps، فإنك ترفض فكرة التخلي عن الـ Arrays و إستخدامهما، و هذا عائد لسبب وجيه و ليس إعتباطي .
إننا نكره الأشياء التي لا نفهمها و لا نستوعبها، إن نجد ان الـ Arrays تفي بالغرض فلا داعي لفهم و إستعاب الـ Maps او الـ Sets لأنها شبيهة بها و ربما قد لا تقوم بالأمر بنفس الطريقة لكنها كفيلة بإنجاز المهمة، لكن ما لا قد تعرفه انه لا يمكنك إستخدام الـ Arrays في كل الحالات، بل لأكون أكثر صراحة معك الشيئ الذي جعلني أوفر لك هذا المقال انه قبلا كنت في صدد تطوير كود برمجي فإحتجت الى شيئ شبيه بالـ array لكنه يقوم بعمل مختلف، فقادني البحث الى الـ Sets و الـ Maps لأتذكر انني لم أستخدم هذين التقنيتين سوى مرة او مرتين طيلة مسيرتي، لأتذكر انه علي ان اخلد هذا الثلاثي في مقال يشرح كل واحدة منهما، فهلا بدأنا ؟
– كل شيئ عن الـ Arrays :
الـ Arrays او المصفوفات هي تقنية متوافرة تقريبا في جل اللغات البرمجية تسمح لنا بتسجيل و حفظ مجموعة من البيانات ( بغض النظر عن نوعها ) في Object واحد و وحيد، فمثلا إن اردنا تسجيل و حفظ 10 أرقام مثلا، قد يكون أسوء خيار تقوم به هو تهيئة 10 متغيرات من نوع Integer، بدل ذلك، يمكنك تهيئة فقط Array واحدة و تخزين الأرقام الـ 10 كاملة دفعة واحدة في Object واحد و يمكنك الحصول على قيمة كل متغير بالإنتقال بين وحدات حجم الـ Array.
– كل شيئ عن الـ Sets :
الـ Set توفر لنا تماما ما ينقص الـ Array، عامل التفرد (Uniqueness) و عامل السرعة، في الـ Set لا يمكنك إضافة قيمة أزيد من مرتين، مثالية جدا لتصفية مجموعة من البيانات و إستخراجها بنمط الـ Distinct دون تكرار، ستفيدك كثيرا في حالة كنت تجلب بيانات عديدة سواء من قواعد بيانات او بإستخدام API مع الحفاظ على عامل التفرد.
يوجد الكثير من الخصائص في الـ Set التي لم نذكرها في الكود أعلاه كالمناداة على عناصر الـ Set من خلال الـ Key او ترتيبه بدل المناداة عليه من خلال الـ Value، الجميل في الـ Set كذلك أنه يمكنك ان تضيف Set داخل Set آخر او ما يسمى بالـ Weaksets، قد يصبح الأمر أكثر تعقيدا في هذه الحالة، لذلك قد تود الإطلاع على تقنية أخرى لتحقيق الامر من خلالها ( مثل الـ Json مثلا ).
– كل شيئ عن الـ Maps :
الـ Map ذات إستخدام أكثر تشعباً و أكثر إحترافية، في كل من الـ Array و الـ Set نقوم بتخزين قيم أحادية بحيث تأخذ كل قيمة مفتاح (Key) الترتيب الخاص بها، في الأمثلة أعلاه نجد مثلا ان خيار فيسبوك يأتي في الترتيب الأول، أي قيمته 0 ( لأن الـ Arrays, Sets و الـ Maps تبدأ من الصفر ) لذلك إن اردنا قيمته عن طريق الـ Key سأقوم فقط بإستدعاء الـ item الموجود في الـ 0، لكن ماذا لو كان لدي 100 من هذه الـ items؟ كيف اتذكر مكان موقع ” فيسبوك ” ضمن قائمة هذه المواقع؟