البرمجة

تحسين طباعة قوائم Java 8

باستخدام لغة البرمجة Java 8، قمت بفحص بعض ميزاتها الجديدة وقمت بإنشاء فئتين لهذا الغرض. الفئة الأولى تسمى “Person” وهي تمثل الأشخاص، والفئة الثانية تسمى “PersonApp” وتحتوي على الدوال والمنطق التي تعمل على هذه الفئة.

في الفئة Person، قمت بتعريف اثنين من المتغيرات، الأولى هي “name” من نوع String والثانية هي “age” من نوع int، تم تعريف بناء الفئة لتستقبل قيمتين تمرران إليها وتعينهما على المتغيرات المناسبة. وقد تم تعريف دوال getter و setter للحصول على وتعيين قيم المتغيرات.

أما في الفئة PersonApp، فقد قمت بتعريف دالة اسمها “printSorted” وهي تأخذ قائمة من الأشخاص ومقارن لهم، وتقوم بطباعتهم مرتبين وفقاً للمقارن المعطى. في الدالة الرئيسية “main”، قمت بإنشاء قائمة من الأشخاص وأضفت بعض الأشخاص إليها، ثم قمت بتنفيذ الدالة “printSorted” وتمرير المقارن المناسب لها.

ولكن عند تشغيل البرنامج، تم طباعة القيم بصورة لا تناسب النتائج المتوقعة. بدلاً من طباعة الأسماء والأعمار، تم طباعة سلاسل تمثل مواقع الكائنات في الذاكرة.

السبب في هذا السلوك هو أن دالة “println” تستخدم افتراضيًا دالة “toString” لطباعة قيم الكائنات. وفي حالة عدم تعريف دالة “toString” بشكل صحيح، فإنها تستخدم النمط الافتراضي الذي يتضمن اسم الكائن ورقمه التعريفي في الذاكرة.

لحل هذه المشكلة، يجب عليك تعديل دالة “toString” في فئة “Person” لتُرجع سلسلة نصية تمثل بيانات الكائن بالشكل الذي ترغب في طباعته. على سبيل المثال، يمكنك تعديل الدالة “toString” في فئة “Person” كالتالي:

java
@Override public String toString() { return "Name: " + this.name + ", Age: " + this.age; }

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

المزيد من المعلومات

بالطبع، دعني أوسع المعلومات حول المشكلة وكيفية حلها.

في لغة البرمجة Java، عندما تقوم بطباعة كائن باستخدام الدالة println()، فإن Java تقوم بتحويل هذا الكائن إلى سلسلة نصية باستخدام الدالة toString() المعرفة في فئة الكائن. إذا لم تُعرف هذه الدالة، فإن Java تقوم باستخدام النمط الافتراضي لطباعة الكائن، والذي يكون عادة مكونًا من اسم الفئة متبوعًا برقم التعريف الفريد للكائن في الذاكرة، كما حدث في الحالة الأصلية.

بتعديل دالة toString() في فئة Person، يمكنك تحديد كيفية عرض بيانات الكائن عند طباعته، مما يسمح لك بتنسيق الناتج كما تريد. في المثال السابق، تم تعديل الدالة toString() لتعيد سلسلة نصية تحتوي على اسم الشخص وعمره، وهذا ما سيتم طباعته عند تشغيل البرنامج.

عند استخدام Java 8، يمكن الاستفادة من العديد من الميزات الجديدة التي تسهل البرمجة وتحسن من أداء التطبيقات. من بين هذه الميزات، تتضمن Java 8 إضافة التعبيرات اللامتناهية وواجهات الوظائف الجديدة مثل Stream API وـLambda Expressions، وهي ميزات قوية تساعد على كتابة كود أقصر وأكثر وضوحًا.

ميزة Stream API توفر واجهة لمعالجة التدفقات من البيانات بشكل متسلسل ويسهل عليك تنفيذ العمليات المتعلقة بالبيانات مثل التصفية والتحويل والتجميع. أما Lambda Expressions، فهي تسمح بتعريف واستخدام وظائف مجهولة دون الحاجة إلى كتابة كود طويل.

باستخدام هذه الميزات، يمكنك كتابة كود أكثر وضوحًا وبساطة، مما يساعد على تحسين إنتاجية التطوير وجودة الكود. وبالتالي، يمكنك الاستفادة الكاملة من إمكانيات Java 8 لتطوير تطبيقات أكثر قوة وكفاءة.

زر الذهاب إلى الأعلى